Facebook SDK PHP:返回好友详细信息

时间:2014-04-18 14:26:53

标签: facebook-graph-api facebook-php-sdk facebook-apps

我有一个服务于Android,IOS和Windows Phone的Web服务。每个应用程序使用本机SDK连接到Facebook,并在执行API请求时传递fb_user_idaccess_token。 API应检索用户和朋友的详细信息并将其保存在MySQL上。

系统运行正常,但不能返回朋友的关系,位置和生日。

$fb = new Facebook([
    'appId' => my_app_id,
    'secret' => my_app_secret
]);

$r = $fb->api("$fb_user_id/?fields=friends.fields(relationship,birthday,location)&access_token=$access_token");
var_dump( $r );

我在Facebook上的应用拥有friends_relationshipsfriends_locationfriends_birthday权限。当我们使用设置为开发人员的Facebook用户进行测试时,应用程序会返回所有信息,但是当非开发人员使用时,我们无法返回这些信息。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我想到发生了什么!

Facebook的SDK为/me生成令牌。在PHP中,我打电话给fb_user_id?fields=friends.fields(id,name,birthday,etc)。但使用/fb_user_id的请求无法使用/me生成的令牌返回信息。

直接在浏览器https://graph.facebook.com/me?fields=friends.fields(id,name,birthday,etc)上使用时有效,但在Facebook的PHP类调用时失败:

An active access token must be used to query information about the current user.

我的解决方案:

    $url = "https://graph.facebook.com/me?fields=id,name&access_token=$this->access_token";
    $this->me = file_get_contents ( $url );                 
    $json = json_decode($this->me, true);

有关详细信息,请结帐this answer。欢迎新的想法。