图谱API - 无法打开流:HTTP请求失败! HTTP / 1.0 400错误请求

时间:2013-01-22 18:55:40

标签: facebook-graph-api graph sdk opengraph token

我需要你的帮助才能解决问题。 获得令牌后的某个时候,当尝试获取有关用户的数据时会发生此错误:

A PHP Error was encountered

Severity: Warning

Message: file_get_contents(https://graph.facebook.com/me?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

执行此操作的代码是:

 $url = "https://graph.facebook.com/me?access_token=".$token;
 $dados = @json_decode(file_get_contents($url));

如何解决此问题?为什么会这样?

我搜索了很多,但没有找到解决方案。有人帮帮我。

感谢。

2 个答案:

答案 0 :(得分:0)

我建议使用PHP SDK:https://github.com/facebook/facebook-php-sdk

如果向下滚动到“Usage”,还有一些示例代码,包括正确的登录处理。有了这个,你真的不需要考虑访问令牌,这一切都发生在后台。另请注意,如果要扩展访问令牌,最多只能使用2小时:使用PHP SDK的“setExtendedAccessToken”功能将其延长至最多60天。

答案 1 :(得分:0)

尝试使用urlencode()您的令牌并将值传递给file_get_contents()。这可能有效。

file_get_contents will only work if you have allow_url_fopen = 1 in your php.ini

对于上述远程文件访问,请考虑使用PHP提供的cURL函数。

function url_get_contents ($Url) {
    if (!function_exists('curl_init')){ 
        die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get the code of request
    curl_close($ch);

    if($httpCode == 400) 
       return 'No donuts for you.';

    if($httpCode == 200) //is ok?
       return $output;


}