Facebook API API "API" теперь возвращает только 25 друзей на страницу? Что происходит?
Мое приложение (игра) работает на Facebook в течение некоторого времени. Я начинаю с запроса списка друзей через вызов API графика: my-uid/friends
запрашивая имя пользователя и профиль pic.
Обычно я возвращаю список всех моих друзей до нескольких тысяч, пока он не начнет добавлять друзей на следующую страницу. Что приятно, так как большинство моих пользователей получают друзей в 1 вызов.
Внезапно, но без изменений в приложении. около 40 минут назад (18:40 вторник (PDT) - 2 мая 2012 года) Я начал получать ответы только с 25 друзьями на страницу!
Я все еще могу получить список всех друзей, используя несколько вызовов, но игра в настоящее время не настроена для этого. Может ли кто-нибудь сказать мне, почему внезапное изменение? Кто-нибудь еще видел похожие проблемы и как мне получить список, чтобы дать мне до 5000 друзей на страницу, как это было раньше.
Воспроизводимость с помощью API-интерфейсов Graph API
Ответы
Ответ 1
Я не знаю, что еще вам сказать; возможно, возвращаемый номер по умолчанию изменился, но когда я попробую, вызов /me/friends?limit=5000
возвращает полный список для меня (но список моих друзей → 500 и 1000, поэтому, возможно, он отключается где-то на этом пути)
(Боковое примечание: среднее количество друзей было найдено ~ 190, поэтому, по-видимому, большинство пользователей будут иметь менее 500 в любом случае, и наличие страницы выше 500 будет краевым случаем
Ответ 2
Кажется, что facebook изменил свой предел до 25 результатов в других вызовах api (feed, posts, friends и т.д.), если вы запрашиваете друзей без параметров, ответ JSON показывает следующее:
"paging": {
"next": "https://graph.facebook.com/USER_ID/friends?format=json&limit=25&offset=25&__after_id=LAST_ID"
}
В любом случае вы можете/всегда должны устанавливать параметры ограничения и смещения, чтобы предотвратить такие вещи, limit = 0 вернет список всех ваших друзей.
https://graph.facebook.com/USER_ID/friends?limit=0
Если вы только запрашиваете друзей у обычного пользователя, максимальное допустимое число равно 5000, поэтому предел должен мог быть 0 или 5000, если вы запрашиваете информацию с facebook page или другие виды вызовов api, например, сообщения или фид, этот лимит может увеличиваться или уменьшаться.
(Обновление) Facebook исправил эту ошибку, поэтому ограничение по умолчанию 0 возвращает 0 друзей, вы должны установить положительный предел, спасибо Dinuz
Ответ 3
В SDK 4.7 вам нужно передать пакет с количеством друзей, которых вы хотите вернуть, я установил его на 5000, так как это максимальное количество друзей, которых вы можете иметь на Facebook.
Вам также нужно настроить приложение как игру в консоли facebook dev и использовать приглашенных друзей, чтобы получить полный список друзей
Создайте свой пакет
Bundle bundle = new Bundle();
Добавить параметры в ваш пакет
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();
Ответ 4
Я думаю, что самое лучшее, что вы можете сделать, это добавить параметр limit = 5000, как говорит Igy.
Однако я опубликовал отчет об ошибке, поскольку это изменение не было замечено или описано в документе.
Ответ 5
Число результатов, возвращаемых конечной точкой /v2.2/me/friends, по умолчанию равно 25.
Список друзей теперь возвращает только друзей, которые также используют ваше приложение: список друзей, возвращаемых с помощью конечной точки /me/friends, теперь ограничен списком друзей, которые разрешили ваше приложение.
См. изменения в Facebook
Журнал изменений API Facebook
Ответ 6
Если вы используете GraphRequest()
(например, в React Native), вы можете поместить его прямо в поле строки, например:
new GraphRequest(
'/me',
{
accessToken,
parameters: {
fields: {
string: 'id,email,first_name,last_name,friends.limit(5000)'
}
}
...