Facebook API - 获取我的应用程序用户的公开个人资料信息

时间:2014-09-12 04:49:02

标签: php facebook facebook-graph-api laravel-4

如何获取曾经通过Facebook登录我的网络应用程序的用户的公开个人资料数据?我为每个用户提供旧的访问令牌,电子邮件地址和ID。他们中的许多人在我们的网站上发表了评论和/或帖子,我想在他们的评论旁边显示他们的Facebook个人资料。 (类似于在this article底部完成的操作,除了帖子是在我们的网络应用程序中制作并且永远不会出现在Facebook上。)我可以得到照片的网址就像这样:

$fb_photo_json = file_get_contents(https://graph.facebook.com/[facebook user id here]/picture?redirect=false);
$fb_photo_data = json_decode($fb_photo_json);
$fb_profile_img_url = $fb_photo_data->data->url;

我尝试了类似这样的方法来获取facebook用户的名字:

$fb_data_json = file_get_contents('https://graph.facebook.com/[facebook user id here]?fields=first_name,last_name');

但我总是得到这个错误:

{
   "error": {
      "message": "Unsupported get request. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api",
      "type": "GraphMethodException",
      "code": 100
   }
}

这是一个令人沮丧的错误!我已经阅读了Facebook的API文档的很大一部分,我发现它很密集,而且基本上没有用。每次我按照建议here请求此数据时,是否需要单独的访问令牌?如果是这样,这似乎令人望而却步,因为这将是许多外部请求。 (我们有很多来自不同用户的帖子。)

更新

我一直在搞乱Facebook Graph API Explorer,当“应用程序”被选为“Graph API Explorer”时,我得到与上面相同的错误。但是,当我将“应用程序”的名称更改为我的Web应用程序时,然后单击“获取访问令牌”,并在GET字段中输入我的一个用户的Facebook ID,它可以正常工作!我现在可以获取通过Facebook登录我网站的任何用户的公开个人资料信息。这必须意味着我需要做的就是发送我的应用程序的访问令牌以及请求。不知道该怎么做,但我会在我明白的时候发布它...明天(我很困)。

1 个答案:

答案 0 :(得分:0)

这有效:

$fb_user_info = file_get_contents('https://graph.facebook.com/{users-fb-id}?fields=first_name,last_name&access_token={my-apps-access-token}');

可以通过这种方式获取访问令牌:

$app_token = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials');