Facebook Graph API:无法访问授权令牌

时间:2013-11-20 06:14:11

标签: php facebook facebook-graph-api

我想要的是是使用公共页面获取数据。 我尝试了文档,但无法找到该信息。然后我用Google搜索并在stackoverflow上找到了这个Can you get a public Facebook page's feed using Graph API without asking a user to allow?问题,这完全解释了我想用PHP做什么。我在 McNab的回答中读到我需要在Facebook上获取该应用程序才能获取该数据(以检索访问令牌)。我创建了一个应用程序,它将我带到了基本设置页面,它给了我 AppId AppSecret 。现在从McNab的回答中,我只需要AppId和app secret获取auth_token,我使用了以下代码,但由于某种原因我得到false而不是AuthToken。我在这做错了什么?我没有向应用程序添加任何进一步的细节,是否导致此问题,我是否需要向应用程序添加更多详细信息或是否还有其他原因导致此问题?

P.S我也在我的电脑上的localhost上尝试这个。

function fetchUrl($url){

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_TIMEOUT, 20);

 $feedData = curl_exec($ch);
 curl_close($ch); 

 return $feedData;

}

$profile_id = "100002138417834";

// App info needed for auth.
$app_id = "--------------";
$app_secret = "-=-=-=-=-=-=-=-=-=-=-=-";

$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");

var_dump($authToken);

更新

当我var_dump(curl_error($ch));(如评论中所示)时,它给了我这个错误:

  

字符串'SSL证书问题,验证CA证书是否正常。   详细信息:错误:14090086:SSL   例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败'   (长度= 146)

2 个答案:

答案 0 :(得分:1)

未正确验证ssl证书。 Curl曾经能够在与CA证书捆绑在一起时正确地执行此操作。您可以将curl指向正确的证书(此处为http://curl.haxx.se/docs/sslcerts.html的信息),或者禁用一起验证。

您可以使用以下命令禁用ssl证书验证:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

这是一个非常常见的卷曲问题,答案可能就是SO; - )

答案 1 :(得分:0)

我试图输出错误(感谢@Jack),我得到了这个:

  

字符串'SSL证书问题,验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败'(长度= 146)

看起来像SSL证书的问题。所以我做的是:

  1. here下载了一个ca包。
  2. 将该捆绑包放在我拥有此index.php文件的同一目录中,即包含该代码的文件。
  3. 然后使用curl_setopt()设置CURLOPT_CAINFO选项以指向该文件(它必须是绝对路径)。
  4. 刷新页面,它正在工作:)
  5. 以下是要添加的行:

    curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__). '/cacert.pem');

  6. 并且归功于@Jack,他在聊天中帮助了我:)