Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用访问令牌时,Facebook graph API返回FALSE_Php_Facebook_Facebook Graph Api - Fatal编程技术网

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编辑完毕,希望没有遗漏任何内容。我感谢你的帮助。