Facebook图形API:Can';t访问授权令牌


Facebook Graph API: Can't access the authorization token

我想要的是使用公共页面获取数据。我试了一下文档,但没能找到那个信息。然后我在谷歌上搜索了一下,发现了这个。你能得到一个公共的Facebook页面吗;s提要使用Graph API而不要求用户允许?在stackoverflow这里的问题,这完美地解释了我想用PHP做什么。我在McNab的回答中读到,我需要在facebook上使用一个应用程序来获取数据(以检索访问令牌)。我创建了一个应用程序,它把我带到了基本设置页面,在那里它给了我AppIdAppSecret。现在,根据McNab的回答,我只需要AppId和应用程序机密就可以获得auth_token,我使用了以下代码,但由于某种原因,我获得了false而不是AuthToken。我在这里做错了什么?我没有向应用程序添加任何进一步的详细信息,这是造成这个问题的原因吗?我需要向应用程序中添加更多的详细信息吗?还是有其他原因造成这个问题?

p.S此外,我正在PC上的本地主机上尝试此操作。

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));(如评论中所建议的)时,它给了我这个错误:

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

ssl证书未正确验证。Curl过去在与CA证书绑定时能够正确地做到这一点。要么你把curl指向正确的证书(信息在这里http://curl.haxx.se/docs/sslcerts.html),或者一起禁用验证。

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

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

这是一个非常常见的旋度问题,答案可能遍布SO;-)

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

string"SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_certificate:证书验证失败"(长度=146)

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

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

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

这要归功于@Jack,他在聊天中帮助了我:)