如何解决 youtube data api V3 中的 curl 错误 60:ssl 证书问题?

Posted

技术标签:

【中文标题】如何解决 youtube data api V3 中的 curl 错误 60:ssl 证书问题?【英文标题】:how to solve curl error 60:ssl certificate problenm in youtube data api V3? 【发布时间】:2017-08-18 09:27:05 【问题描述】:

我正在学习使用 youtube data api v3(使用 php)。所以我下载了示例 api 代码以及一些我如何成功地在我的工作目录(版本 1.4.x)中下载和安装作曲家。

在此之后我运行 serach.php 脚本,它显示以下错误

致命错误:未捕获的异常“GuzzleHttp\Exception\RequestException”与消息“cURL 错误 60:SSL 证书问题:无法在 C:\wamp\www\youtube feeds\ 中获取本地颁发者证书(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html)” vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php 在第 187 行 ( ! ) GuzzleHttp\Exception\RequestException: cURL 错误 60: SSL 证书问题:无法在 C:\wamp\www\youtube feeds\vendor\guzzlehttp\guzzle\src\Handler\ 中获取本地颁发者证书(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html)第 187 行的 CurlFactory.php 。

我在 php 5.5.12 和 apache 2.4.9 中使用 wamp。我还从托盘和 php.ini 文件中启用了 curl 扩展。

【问题讨论】:

【参考方案1】:

如果刚开始,不要试图跳入深渊。 从事物的“restfull” api 方面开始。

例如,您可以这样做。

$url_link = 'https://www.googleapis.com/youtube/v3/videos?part=snippet&id=[VIDEO_ID]&key=[API_KEY]';

$video = file_get_contents($url_link);
$data= json_decode($video, true);

然后,您可以根据需要在该呼叫中获取所需的信息。像这样

$vid = $data['id'];

LIB 有利于简化大型程序和代码,但并不总是需要。

【讨论】:

【参考方案2】:

问题是由于缺少“cacert.pem”文件(或由运行 php 的主机操作系统提供)造成的。此文件验证证书颁发机构,以便 curl 可以安全地连接到 youtube(并且知道它是 youtube,而不是中间人攻击的受害者)。

您可以手动下载这些文件,并在您的 php ini 中指定它们,但更好的选择是使用“确定性”php 包来管理这些文件。我建议使用作曲家,它很容易开始使用。

【讨论】:

以上是关于如何解决 youtube data api V3 中的 curl 错误 60:ssl 证书问题?的主要内容,如果未能解决你的问题,请参考以下文章

用于任意页面的 Youtube Data API v3 pageToken

YouTube 频道中的“已发布视频”和“上传”有啥区别?以及如何通过 YouTube Data v3 API 获取它们?

如何使用新的 YouTube Data API (V3) 获取某个频道的上传视频列表?

如何使用新的 YouTube Data API (V3) 获取某个频道的上传视频列表?

如何通过 YouTube Data API v3 从我自己的 YouTube 频道获取所有视频

如何从 Youtube Data API v3 获取最大搜索结果?