Ошибка Graph API?/{group-id}/конечная точка фида дает несогласованные результаты

tl; dr, получающий групповой фид, возвращает непоследовательные # сообщения

Эта кажущаяся ошибка, похоже, влияет на версии v1.0 и v2.0 API-интерфейса Facebook.

Я являюсь администратором закрытой группы Facebook с ~ 1800 сообщениями. Я хотел бы вернуть все должности в этой группе.

Для этого я paging.next /{group-id}/feed и следую URL-адресу в paging.next. Это фактически возвращает сообщения, но результаты несовместимы и обычно возвращает ~ 150 сообщений меньше, чем на самом деле в группе (я самостоятельно проверил и дважды проверил это #).

Базовый вызов /{group-id}/feed, когда paging.next все ссылки paging.next, дает 1652 сообщения.

Базовый вызов /{group-id}/feed?limit=10, когда paging.next все ссылки paging.next 1606 сообщений.

Базовый вызов /{group-id}/feed?limit=50, когда paging.next все ссылки paging.next, дает 1687 сообщений.

Следует отметить, что каждый из вышеуказанных случаев является внутренне непротиворечивым. (например, вызов limit=10 всегда возвращает то же (неправильное) количество сообщений.)

Я искал Google и SO, пытаясь устранить неполадки. Некоторые вещи, которые я пробовал:

  • Вариации на разрешениях токена доступа: использование либо макс. или мин. необходимо не решить проблему.
  • Исключение ошибок привязки языка: я написал тестовый код как в Go, так и в Node.js, и оба испытывают одну и ту же проблему.
  • Использование разных версий api: как 1.0 и 2.0 демонстрируют ту же проблему.

Я действительно нахожусь здесь на грани ума. Я не знаю, для устранения неполадок. Есть идеи?

Ответ 1

Это не обязательно "ошибка" - это задокументировано: https://developers.facebook.com/blog/post/478/

По сути, предел применяется перед фильтрацией результатов (например, удаленные сообщения или видимость), и, следовательно, предел не всегда соответствует количеству сообщений, которые вы получаете. Хуже того, вы можете получить пустые страницы в своем результирующем наборе, и вам нужно будет проверить еще несколько страниц в пустом пространстве, чтобы убедиться, что ничего не осталось.

Сообщения могут стать довольно разреженными, когда вы возвращаетесь много времени из-за удаленных учетных записей пользователей и таких вещей. Таким образом, вы можете получить слоты 200 или что-то, где ничего не возвращается, потому что все сообщения там пропали.