【问题标题】:Facebook SDK PHP: return friends detailsFacebook SDK PHP:返回好友详细信息
【发布时间】:2014-06-03 01:59:07
【问题描述】:

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

系统运行正常,只是无法返回好友的retionship、位置和生日。

$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 用户进行测试时,应用会返回所有信息,但当非开发者使用时,我们无法返回这些信息。

有什么想法吗?

【问题讨论】:

  • fb_user_id/friends?fields=birthday,location,relationship_status 工作正常。你有什么错误吗?
  • 没有错误。它只是返回公共信息。不知道为什么。
  • 如果您将代码包装在 try-catch 中并捕获 OAuthException,它应该会显示是否有错误。
  • 我会试试这个并发布结果。

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


【解决方案1】:

我知道发生了什么!

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。欢迎提出新想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多