Facebook PHP SDK 报错

Posted

技术标签:

【中文标题】Facebook PHP SDK 报错【英文标题】:Facebook PHP SDK giving an error 【发布时间】:2011-07-23 13:47:18 【问题描述】:

我正在尝试运行 Facebook 的 php SDK 附带的示例,但出现以下错误:

致命错误:未捕获的 CurlException: 60:SSL证书问题,验证 CA 证书没问题。细节: 错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书 验证失败 C:\wamp\www\fb\src\facebook.php 上 第 614 行

任何想法我做错了什么?

【问题讨论】:

【参考方案1】:

问题是 cURL 没有被配置为信任服务器的 HTTPS 证书,你可以通过添加这行代码来解决这个问题:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

【讨论】:

这非常有帮助,尤其是对于那些在本地测试 Facebook 应用程序的人!为了完成这项工作,我必须实际添加 $opts[CURLOPT_SSL_VERIFYPEER] = false;在第 935 行附近的 base_facebook.php 中,在 curl_setopt_array($ch, $opts); 之前 @BryanGentry 在我的网站投入生产后是否建议删除该行代码? 我建议将其删除以用于实时生产应用程序。 您可能不想禁用 SSL 验证。根本原因是 Facebook 更新了他们的 SSL 证书并且根不可用。 FB SDK on github 包含更新的根证书【参考方案2】:

我刚刚遇到了同样的问题,在我的情况下禁用对等验证是不可接受的。 我更新了 fa_ca_chain_bundle.crt 文件(来自facebook's gitbub),它现在可以工作了。

问候, 马立克

【讨论】:

我同意。禁用 SSL 验证是个糟糕的主意。 你能告诉我你下载crt文件后把它放在哪里,这样它就可以工作了吗?【参考方案3】:

Raymond Ho 添加这行代码的答案工作正常:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

只需确保新的 facebook sdk 之前将其包含在“Facebook_base”文件中即可:

$result = curl_exec($ch);

谢谢。

【讨论】:

【参考方案4】:

找到这一行

并紧随其后,添加:

$opts[CURLOPT_SSL_VERIFYPEER] = false;

【讨论】:

【参考方案5】:

另一种方法是添加这一行,与其他回复的建议相同,但在一行中,请确保首先包含 Facebook SDK

Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;

【讨论】:

【参考方案6】:

我也遇到了同样的问题,你只需要更新你可以在这里找到的 crt 文件 https://raw.githubusercontent.com/facebook/facebook-php-sdk/master/src/fb_ca_chain_bundle.crt

crt 文件与出现该错误的文件位于同一文件夹中

【讨论】:

@ColonelThirtyTwo 在这种情况下,它是一个加密的 .crt 文件,需要解决这个问题,除了在外部链接到它之外,他无法真正分享它,他提供的链接来自 facebook 的官方sdk,它不太可能宕机

以上是关于Facebook PHP SDK 报错的主要内容,如果未能解决你的问题,请参考以下文章

Firebase SDK 与 Facebook SDK 冲突

Facebook SDK iOS 邀请没有 FBWebDialogs 的用户

Facebook Unity SDK 如何为(喜欢 Facebook 页面)添加点赞按钮?

Facebook Graph API Explorer 和 iOS SDK API 调用返回不同的结果

如何避免在 iOS 中使用 Facebook SDK 时出现“重复状态消息”错误?

登录后 Facebook IOS SDK 导航到另一个控制器不起作用