我需要你的帮助才能解决问题。 获得令牌后的某个时候,当尝试获取有关用户的数据时会发生此错误:
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));
如何解决此问题?为什么会这样?
我搜索了很多,但没有找到解决方案。有人帮帮我。
感谢。
答案 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;
}