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

cr_*_*_az 1 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);
Run Code Online (Sandbox Code Playgroud)

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

 mAsyncRunner.request("me/friends", new SampleRequestListener());
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

注册您的应用程序的Android密钥哈希.Facebook使用它来确保另一个应用程序在与Facebook Android应用程序交谈时无法模拟您的应用程序.

生成密钥哈希:

keytool -exportcert -alias [alias] -keystore [keystore] | openssl sha1 -binary | openssl base64在Facebook开发人员设置中,转到"移动设备"和"设备"选项卡.

在Android部分中,在Key Hash字段中输入密钥哈希.

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

om2*_*345 7

使用

mFacebook.request(graphpath, bundle);

方法, Bundle将有这样的参数

graphpath = "me/friends"
bundle.putString("fields","birthday");
Run Code Online (Sandbox Code Playgroud)

并调用上面的请求方法,它会给你生日,但你必须添加friends_birthday权限.