我正在使用facebook图形api来检索登录用户的信息。
$facebookdata = json_decode(file_get_contents('https://graph.facebook.com/me?access_token=' . $fb_accesstoken . '&fields=name,picture'),true);
现在,当我var_dump时,我得到null。我确实试过转到urlhttps://graph.facebook.com/me?access_token=ACCESS_TOKEN&fields=id,name,picture。它显示了名称和照片URL。
我感谢你的帮助。
不用file_get_contents
,你可以使用更容易使用的Facebook PHP SDK(请参阅github):
require "facebook.php";
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$facebook->setAccessToken("...");
$args['fields'] = "name,picture";
$facebookdata = $facebook->api('/me', $args);
如果您想查看获取用户访问令牌的流程,请查看SDK的示例(文档齐全)。
希望能有所帮助!
检查php.ini
中是否启用了allow_url_fopen
。否则进行调整,因为file_get_contents届时将无法从http URL中读取。
第二,提高你的error_reporting
水平。它应该告诉你的。
若并没有收到错误消息,那个么使用PHP user_agent
的访问可能会被阻止。还有另一个php.ini设置。另外,也可以尝试curl
。
您应该确定请求返回的http响应代码。
我发现file_get_contents()只在http响应为200时有效
如果响应代码是404(找不到页面)、400(错误请求)等,则不会返回字符串。
使用错误的access_token访问Facebook API返回400。
示例:
带有'的file_get_contents()http://www.google.co.uk有效,来自谷歌的http响应是200
带有'的file_get_contents()http://www.google.co.uk/me'为空,来自谷歌的http响应为404
//i had the same problem before.for some reason the server has a problem with file_get_contents and i used this function.try it instead
/* gets the data from a URL */
function get_myurl_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = 'https://graph.facebook.com/me?access_token=' . $fb_accesstoken . '&fields=name,picture';
$facebookdata = json_decode(get_myurl_data($url));