【问题标题】:Invalid or no certificate authority found, using bundled information使用捆绑信息发现无效或未找到证书颁发机构
【发布时间】:2014-07-18 15:10:25
【问题描述】:

我开始使用 facebook API。 我从 facebook 下载了示例代码,配置了我的 appID 和密钥。

<?php
   require '../src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => '...',
  'secret' => '....',
));

// Get User ID
$user = $facebook->getUser();

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

// This call will always work since we are fetching public data.
$naitik = $facebook->api('/naitik');

?>

在本地主机上,脚本可以正常工作。但是在主机上我收到以下错误:

使用捆绑信息发现无效或未找到证书颁发机构

.crt 文件已成功上传

有人可以指出我的错误吗? 提前致谢。

【问题讨论】:

  • 对不起,我过早地标记了下面的答案。我认为我能够清理这两个答案,并使访问者清楚接受答案的后果。由于我的努力,我也获得了一个不错的 Link to the Past 帽子!

标签: php facebook


【解决方案1】:

在 CURL 中设置选项以指向您的证书文件

此选项将告诉 CURL 您的 fb_ca_chain_bundle.crt 文件与您的脚本位于同一文件夹中。

Facebook::$CURL_OPTS[CURLOPT_CAINFO] = getcwd().'/fb_ca_chain_bundle.crt';

在 base_facebook.php 第 844 行 curl_exec 失败并生成错误。然后脚本设置:

curl_setopt($ch, CURLOPT_CAINFO,
              dirname(__FILE__) . '/fb_ca_chain_bundle.crt');

然后再试一次。

第二次一切正常,没有问题,只是把你的日志弄得一团糟

不要使用

Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;

否则中间人将能够拦截您的电话!

【讨论】:

  • 这个答案比接受的答案更合适!非常感谢!
  • @matt 这个 sn-p 会被添加到哪里?
  • 请注意,我必须在 AWS 的 PHP 5.5 应用服务器中使用 DIR.'/fb_ca_chain_bundle.crt'。我不知道为什么,但提示。
  • 它对我有用!为什么为什么为什么为什么为什么在世界上我不得不告诉 curl 证书链在哪里......他们在 facebook 上是怎么想的?为什么它适用于我的另一个域?
【解决方案2】:

禁用 SSL 安全功能

虽然我不知道确切的错误消息,但通过 PHP SDK(以及 Curl)与 Facebook 通信时的 SSL 问题很常见。你试过做这样的事情吗?

Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;

这将禁用 SSL“验证对等”安全功能,从而停止生成错误消息。

【讨论】:

  • 引用的 URL 不再有效。 Facebook 似乎不再使用 GitHub 问题跟踪器。他们在developers.facebook.com/bugs 有一个问题跟踪器,但我不确定他们是否移动了引用的问题,因为我不确定确切的文本并且搜索效果不是很好。
  • 这个答案是通过断开功能来解决错误。该功能的存在是有原因的,而这个原因就是安全性。关闭安全功能来纠正错误配置的证书文件位置是完全不能接受的。 -1,标记。
  • 这总是错误的做法。它不应被标记为正确答案。下面的那个好很多。
  • @JustinWarkentin:已更改
【解决方案3】:

http://wordpress.org/extend/plugins/facebook-feed-grabber/获取最新插件并用新的替换旧的链证书

【讨论】:

    【解决方案4】:

    我检查了服务器配置,一切正常。但是,我在互联网上看到了其他一些帖子,用户通过在

    中编辑以下行来解决此问题

    “base_facebook.php”

    /** * curl 的默认选项。 */

    public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 60,
    CURLOPT_USERAGENT => 'facebook-php-3.2',
    CURLOPT_SSL_VERIFYPEER => false, (ADDED THIS LINE)
    );
    

    我已经对其进行了测试,现在可以正常工作,并且它成功地发布到 Facebook 页面。

    干杯!

    穆达萨阿里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 2014-12-26
      • 2018-10-08
      • 2018-06-19
      • 1970-01-01
      相关资源
      最近更新 更多