Php 使用访问令牌时,Facebook graph API返回FALSE
在我的应用程序中,我试图测试过期的访问令牌。向……提出请求时Php 使用访问令牌时,Facebook graph API返回FALSE,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,在我的应用程序中,我试图测试过期的访问令牌。向……提出请求时 https://graph.facebook.com/1234?access_token=xxxxxxxxxx 它总是返回FALSE 奇怪的是,当复制url并在web浏览器中使用它时,它会返回预期的结果,而不是false。在facebook文档中似乎找不到任何文档说明它为什么会返回FALSE以及如何解决它 我在stackoverflow上发现了另一个问题,它回答了这个问题,但答案不是很清楚,我无法对此发表评论。这是链接 如有任何建议
https://graph.facebook.com/1234?access_token=xxxxxxxxxx
它总是返回FALSE
奇怪的是,当复制url并在web浏览器中使用它时,它会返回预期的结果,而不是false。在facebook文档中似乎找不到任何文档说明它为什么会返回FALSE以及如何解决它
我在stackoverflow上发现了另一个问题,它回答了这个问题,但答案不是很清楚,我无法对此发表评论。这是链接
如有任何建议或帮助,将不胜感激
编辑:
当向Facebook发出请求时,它意味着返回JSON对象。向url发出请求时,我收到的响应代码为0https://graph.facebook.com/1234?access_token=xxxxxxxxxx 正如上面提到的,响应体是错误的。我使用的代码如下:
$url = "https://graph.facebook.com/{user_id}?access_token=xxxxxxxxxx";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPGET, TRUE);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
$curl_response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($curl_response, 0, $header_size);
$body = substr($curl_response, $header_size);
$response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
{
id: "1234",
first_name: "Name",
gender: "male",
last_name: "Surname",
locale: "en_US",
middle_name: "Middle Name",
name: "Name Middle Name Surname",
username: "name.surname"
}
运行上述代码时,我收到错误响应和0的http代码。
当我将url复制并粘贴到任何浏览器中时,发生的情况如下所述:
如果访问令牌有效,它将以JSON格式返回用户数据$响应代码为200,$body的值应如下所示:
$url = "https://graph.facebook.com/{user_id}?access_token=xxxxxxxxxx";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPGET, TRUE);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
$curl_response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($curl_response, 0, $header_size);
$body = substr($curl_response, $header_size);
$response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
{
id: "1234",
first_name: "Name",
gender: "male",
last_name: "Surname",
locale: "en_US",
middle_name: "Middle Name",
name: "Name Middle Name Surname",
username: "name.surname"
}
如果访问令牌无效,它将以JSON格式返回错误$响应代码取决于错误,但在大多数情况下是403。$body的数据值示例:
我知道响应代码0通常意味着从未发出请求或不支持curl之类的东西,但是,当我发出$url=http://www.google.co.za; 使用相同的代码,我得到了200的响应代码,返回的响应主体是网站的html代码。所以我知道它是有效的,我用3个不同的URL对它进行了测试 浏览器中响应的格式是什么?请提供您用来打电话的代码。@Fosco编辑完毕,希望没有遗漏任何内容。我感谢你的帮助。