我的应用程序(游戏)已经在Facebook上运行了一段时间。我首先通过图形API调用请求朋友列表:my-uid / friends 询问用户名和个人资料照片。
通常我会收到所有朋友的列表,最多可达几千,直到它开始将朋友放到下一页。这很好,因为我的大多数用户都可以通过一次通话获得朋友。
然而,突然间,并没有对应用程序进行任何更改。大约40分钟前(星期二(星期二)18:40 - 2012年5月2日)我开始得到每个'页面'只有25位朋友的回复!我仍然可以使用多个来电获取我的整个朋友列表,但目前尚未正确设置游戏。谁能告诉我为什么突然改变?其他人看到过类似的问题,我如何获得列表,每页给我最多5000个朋友。
使用Graph API Explorer
重现答案 0 :(得分:19)
我不知道还能告诉你什么;也许返回的默认号码已更改,但是当我尝试时,拨打/me/friends?limit=5000
会为我返回完整列表(但我的朋友列表大于500且<1000,所以也许它会在某处切断)
(旁注:the average number of friends has been found to be ~190所以大概大多数用户的用户数不会超过500,并且不得不超过500页,这将是一个边缘案例
答案 1 :(得分:3)
似乎facebook将其限制更改为其他api调用的25个结果(Feed,帖子,朋友等),如果您请求没有参数的朋友,JSON响应会显示以下内容:
"paging": {
"next": "https://graph.facebook.com/USER_ID/friends?format=json&limit=25&offset=25&__after_id=LAST_ID"
}
无论如何你可以/应该总是设置限制&amp;抵消参数以防止此类事件, limit = 0 将返回您的所有朋友列表。
https://graph.facebook.com/USER_ID/friends?limit=0
如果您只是向普通用户请求朋友,则允许的最大数量为5,000,因此如果您要求来自a的信息, 的限制应为 0或 5,000 Facebook页面或其他类型的api调用,如帖子或Feed这个限制可以增加或减少。
(更新)Facebook修复了这个bug,所以设置限制为0返回0个朋友,你应该设置一个正限制,感谢Dinuz
答案 2 :(得分:3)
在SDK 4.7中,您需要传递一个包含您想要返回的朋友数量的包,我已将其设置为5000,因为这是您在Facebook上可以拥有的最大朋友数。
您还需要在facebook开发者控制台中将您的应用设置为游戏,并使用邀请朋友来获取完整的朋友列表
创建您的包
Bundle bundle = new Bundle();
将params添加到您的包中
bundle.putInt("limit", 5000);
然后将其传递给GraphRequest
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/me/invitable_friends",
bundle,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
//Do something with the response
}
}
).executeAsync();
答案 3 :(得分:2)
我认为你可以做的最好的事情是添加limit = 5000参数,因为Igy说 但是我发布了a bug report,因为此更改未在文档中注意或描述。
答案 4 :(得分:1)
/v2.2/me/friends 端点返回的结果数现在默认为25.
朋友列表现在只返回同时使用您的应用的朋友:通过 / me / friends 端点返回的朋友列表现在仅限于已授权您的应用的朋友列表。
查看Facebook的变化 Facebook API change log
答案 5 :(得分:1)
如果您使用GraphRequest()
(例如在React Native中),您可以将其直接放在字符串字段中,如下所示:
new GraphRequest(
'/me',
{
accessToken,
parameters: {
fields: {
string: 'id,email,first_name,last_name,friends.limit(5000)'
}
}
...