Facebook Graph API не дает никаких данных ранее 2011 года? - PullRequest
4 голосов
/ 16 января 2012

Я автор приложения Fazzle на iPhone.В основном мое приложение загружает обновления статуса пользователя и сортирует их по различным порядкам (например, наиболее понравившимся, наиболее комментируемым).

Мне было интересно, позволяют ли Facebook разработчикам получать обновления статуса пользователя со дня их присоединения к Facebook?потому что, когда я запустил приложение, я мог получать статусы пользователей только с 2009 года. Сегодня я только что обнаружил, что Facebook ограничивает вызовы API Graph только с 2011 года.

Я пытался просмотреть документацию, спросил здесь и связался с Facebook через их форум.Однако до сих пор нет ни слова об этом ограничении в Graph API.Я что-то пропустил?Могу ли я получить какой-либо другой способ получения данных для обновлений статуса ранее, чем в 2011 году?

Вы можете проверить это самостоятельно здесь .Используйте этот запрос GET:

https://graph.facebook.com/(your_user_id)/statuses?limit=99999

Прокрутите вниз, и вы увидите, что не все загружено.

Это из-за конфликта интересов с временной шкалой Facebook?Если это так, это отстой.

Зарегистрирован как ошибка здесь .Все еще надеясь, что кто-нибудь может указать на мои ошибки, если они есть.

Ответы [ 3 ]

10 голосов
/ 24 января 2012

Абсолютно вы можете получить старые посты из Graph API; нет предела (по крайней мере, не то, что я знаю). Используйте параметры since и until для постраничного просмотра результатов вместо offset:

https://graph.facebook.com/me/feed?access_token=[token]&until=1165474447

Документация для Пейджинг не слишком углублен в since и until:

При запросе соединений есть несколько полезных параметров, которые позволяют вам фильтровать и просматривать данные соединения:

Но в основном, until - это все равно, что сказать «Дайте мне сообщения до этой даты», и с тех пор похоже «Давать мне сообщения с этой даты» Таким образом, вы можете прокрутить весь канал пользователя назад, используя цикл примерно так:

// pseudocode
timestamp = now
do {
  posts = graph.get(/me/feed?until=timestamp)
  if posts.length == 0: break;
  // process posts
  timestamp = posts[0].created_time // first should be the oldest, in theory
} while (1)

Замените until на since и самый старый created_time на самый новый, чтобы идти вперед во времени, например. чтобы получить новые сообщения с момента последнего запуска приложения пользователем.

2 голосов
/ 22 января 2012

Facebook с тех пор подтвердил это как ошибку .Если вы когда-либо следили за баг-трекером в Facebook, к сожалению, это означает, что шансов на то, что они это исправят, очень мало.

0 голосов
/ 16 января 2012

Вам нужно будет разбить на страницы.Лимит ограничен.Пожалуйста, прочитайте http://developers.facebook.com/blog/post/478/

...