1

我正在将 Facebook Connect 集成到我们的应用程序中。我认为在http://github.com/facebook/php-sdk使用 Facebook 官方 SDK是最好的方法,因为它在 FB Developers wiki 上进行了宣传。

但我无法让它发挥作用。在研究 API 代码时,我想起了我之前关于 CURLOPT_SSL_VERIFYPEER 参数的经验。该参数的默认值为“true”,在 API 中未设置,隐式设置为 true。

我将 CURLOPT_SSL_VERIFYPEER 参数更改为 false,问题就解决了。使用它作为 true,我可以从 /get/me 查询的 Graph API 得到的是“boolean(false)”,但是将其 CURLOPT_SSL_VERIFYPEER 参数设置为 false 相同的 curl 查询给了我用户 json 对象。

我想在这里问的是,使用 Facebook PHP SDK 作为“CURLOPT_SSL_VERIFYPEER”参数设置为 false 的副作用是什么。更一般地说,如果我在没有对等验证的情况下启动 curl 会话是否有意义。

4

2 回答 2

2

您的 PHP 安装有问题。很可能,您没有验证 SSL 证书所需的 ENTRUST 中间证书。这是他们的证书链,

Certificate chain
 0 s:/C=US/ST=California/L=Palo Alto/O=Facebook, Inc./CN=*.facebook.com
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
   i:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority

将 CURLOPT_SSL_VERIFYPEER 设置为 false 只会禁用证书检查。你不应该在生产中这样做。

于 2010-05-20T20:43:12.113 回答
-3

试试这个,它为我解决了问题

Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false; Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;

于 2010-09-18T12:22:08.620 回答