适用于Android的Facebook API:如何获取有关用户朋友的扩展信息?

时间:2011-01-07 18:17:43

标签: android facebook-graph-api

我正在开发小型Android应用程序,试图添加Facebook支持。

主要问题:我只能获得有关用户朋友(身份证,姓名)的基本信息。 应用程序权限列表(offline_access仅供测试,将很快删除):

 String[] sPermissions = { "friends_about_me"
                         , "friends_birthday"
                         , "friends_location"
                         , "friends_website"
                         , "offline_access" };
 mLoginButton.init(this, mFacebook,  sPermissions);

以下请求正常工作 - 返回id:name对列表

 mAsyncRunner.request("me/friends", new SampleRequestListener());

但是如果我改变它以获得更多信息

 mAsyncRunner.request("me/friends?fields=id,name,birthday,hometown", new SampleRequestListener());

服务器返回错误“必须使用活动访问令牌来查询有关当前用户的信息。” 我使用浏览器测试了这些Graph API请求 - 它们都按预期工作。

小注释:我使用默认调试来签署apllication并根据Facebook指令将其添加为Facebook应用程序哈希:

  

注册您的应用程序的Android密钥哈希。 Facebook使用此功能确保其他应用在与Facebook Android应用交谈时无法模拟您的应用。

     

生成密钥哈希:

     

keytool -exportcert -alias [alias]   -keystore [keystore] | openssl sha1 -binary | openssl base64在Facebook开发人员设置中,转到   移动和设备标签。

     

在Android部分中,输入密钥   密钥哈希字段中的哈希。

也许还有另一种方法来获取用户的frineds信息(bday,位置,性别等)?

3 个答案:

答案 0 :(得分:7)

使用

mFacebook.request(graphpath, bundle);

方法, Bundle将包含与此类似的参数

graphpath = "me/friends"
bundle.putString("fields","birthday");

并调用上述请求方法,它会为您提供生日,但您必须添加friends_birthday权限。

答案 1 :(得分:0)

当您在图谱API中调用/me/friends时,它返回的是朋友的ID和名称。如果您想获得有关朋友的更多信息,请稍后致电/Friend_ID

答案 2 :(得分:0)

检查this答案,了解如何获取Facebook好友列表以及这些好友中的哪些人安装了您的应用。