我要求从我正在开发的Android应用中获取用户朋友。从Facebook Api V2.0开始,我知道我应该只获得已通过我的应用程序登录的用户朋友。但是,虽然我知道用户的某些朋友已通过我的应用程序登录,但在请求该用户的朋友时,他们不会出现在Facebook请求响应中。例如,我找回了40个朋友而不是50个以上。
之前有没有人经历过这种行为?我已经从少数用户删除了应用程序,通过登录重新授权,但我没有看到行为的任何变化。
以下是我正在使用的代码:
new Request(ParseFacebookUtils.getSession(),"me/friends", null, null, new Request.Callback(){
@Override
public void onCompleted(Response response) {
if (response == null){
return;
}
else if (response.getError() != null){
response.getError().getException().printStackTrace();
return;
}
GraphMultiResult result = response.getGraphObjectAs(GraphMultiResult.class);
List<GraphObject> fbInList = result.getData();
if (fbInList != null && !fbInList.isEmpty()){
for (GraphObject user : fbInList) {
JSONObject jsonUser = user.getInnerJSONObject(); // The Facebook User
System.out.println("name: " + jsonUser.optString("name"));
}
}
}
}).executeAsync();
答案 0 :(得分:4)
我发现了什么问题。当我更新到最新的Facebook SDK时,Facebook只返回了25个朋友。我需要使用分页或为我的朋友请求添加限制。在以前的SDK上我不需要。
添加限制:
Bundle params = new Bundle();
params.putString("limit", "50"); // Up to 5000?
friendRequest.setParameters(params);
相关的堆栈溢出问题:
Facebook graph API 'friends' request now only returning 25 friends per page? What's going on?
newMyFriendsRequest Facebook returns only 25 friends
用于分页的有用Facebook链接:
https://developers.facebook.com/docs/graph-api/using-graph-api/v2.2#paging
答案 1 :(得分:0)
doc的相关部分就是这个
在API的v2.0中,我无法获得已登录我的应用程序的人的完整好友列表 - 是否有办法获得完整的朋友 列表吗
使用Graph API v2.0及更高版本,对
/me/friends
的调用仅返回 也使用你的应用程序的朋友。 这些朋友也必须得到批准user_friends
权限。在你想让人们的情况下 在您的应用发布的故事中标记他们的朋友,您可以使用 Taggable Friends API。如果您想邀请别人加入您的应用,我们 有许多解决方案取决于您构建的应用程序类型 以及您为之构建的平台。请看我们的问题 Inviting Friends了解更多信息。
因此,只有朋友使用您的应用,他们也应该授权user_friends
,否则您将无法获得他们的详细信息。你做过这个吗?