Facebook错误2500与有效的访问令牌


Facebook error 2500 with valid access token

以前我已经能够通过PHP中的cURL访问Facebook OAuth服务。然而,我现在得到一个2500的错误(在这种情况下An active access token must be used to query information about the current user.)。我可以通过我的web浏览器直接使用URL访问信息,但是当我尝试在PHP中使用cURL访问它时,它不起作用。我使用的是Facebook API v1.0,令牌是用Graph API Explorer生成的。

What I have try

我尝试创建一个新的访问令牌,以及尝试使用Facebook API v2.0和未版本化的API。如上所述,我尝试在浏览器中使用完全相同的url,这是有效的。我也尝试过清除cookie,然后再试一次,以及尝试一个完全不同的浏览器。

我在SO上看到了一些与这个问题相关的其他问题,但是没有一个答案适合我。

我使用的URL只是对/me/home边缘的调用。

https://graph.facebook.com/v1.0/me/home/?since=1402913078&until=1402913213&access_token=<access token here>

其中<access token here>为访问令牌

PHP cURL代码如下所示:
$url = "<the url here>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
// get the response here...

结果是cURL请求的实际URL与应该请求的URL不同(缺少GET参数)。这是由代码中的另一个位置引起的。

要验证请求的URL是否与传递给cURL的URL相同,请使用以下代码:

$requested_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);