我有一个服务于Android,IOS和Windows Phone的Web服务。每个应用程序使用本机SDK连接到Facebook,并在执行API请求时传递fb_user_id
和access_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_relationships
,friends_location
和friends_birthday
权限。当我们使用设置为开发人员的Facebook用户进行测试时,应用程序会返回所有信息,但是当非开发人员使用时,我们无法返回这些信息。
有什么想法吗?
答案 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。欢迎新的想法。