【发布时间】:2014-09-12 04:49:02
【问题描述】:
如何获取曾经通过 facebook 登录我的网络应用程序的用户的公开个人资料数据?我有每个这些用户的旧访问令牌、电子邮件地址和 ID。他们中的许多人在我们的网站上发布了 cmets 和/或帖子,我想在他们的评论旁边显示他们的 Facebook 个人资料。 (类似于this article 底部的操作方式,只是该帖子是在我们的网络应用程序中发布的,并且永远不会出现在 Facebook 上。)我可以像这样获取照片的 url:
$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,当“应用程序”被选为“图形API Explorer”时,我会获得相同的错误。但是,当我将“应用程序”的名称更改为我的网络应用程序时,然后单击“获取访问令牌”,并在 GET 字段中输入我的一位用户的 Facebook ID,它就可以了!我现在可以获取通过 Facebook 登录到我的网站的任何用户的公开个人资料信息。这一定意味着我需要做的就是将我的应用程序的访问令牌与请求一起发送。不知道该怎么做,但我会在弄清楚后立即发布...明天(我困了)。
【问题讨论】:
-
如果您使用 Facebook 的任何 SDK,则应在每个请求中隐式发送访问令牌(假设您已正确实现登录) - 否则,如果您手动调用 API,则需要自己添加访问令牌作为参数
-
不使用 Facebook 的 SDK。我正在使用专门为 Laravel 编写的包。在弄清楚如何将访问令牌作为参数发送的过程中。我是 http 获取请求的新手。
标签: php facebook facebook-graph-api laravel-4