Интеграция с Facebook Graph Api - механизм обновления без обновлений в реальном времени - PullRequest
0 голосов
/ 11 января 2012
  • Я работаю над проектом, который использует Facebook Graph Api для загрузки информации о пользователях нашего приложения и их друзьях из Facebook. Необходимо обновить эти данные, но, как я понимаю, обновление в реальном времени не вариант. Например, я хотел бы получить обновление профиля друзей наших пользователей приложения, и я не вижу способа сделать это с помощью обновления в реальном времени.
  • Может кто-нибудь дать мне совет по поводу этого механизма обновления? Мне нужно обновить пользователей приложения, их друзей и каналы профилей пользователей и их друзей. Я понимаю, что мне придется опросить серверы Facebook, чтобы получить эти данные. То, что я пытаюсь выяснить, это некоторые хорошие практики при выполнении этих вещей. Частота обновления? Способ узнать, что данные изменились? Если у кого-то есть опыт в подобных вещах, то каждый совет будет много значить.

Спасибо.

Ответы [ 3 ]

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

Не очень полезно для вашего случая использования (так как вы хотите получать данные, которые часто меняются), но стоит отметить, что Graph API теперь поддерживает ETags - https://developers.facebook.com/blog/post/627/.

ETags будутсообщить вам, изменились ли данные с момента последнего запроса.Это не помешает вам выйти за пределы регулирования API Facebooks, но это быстрый и простой способ узнать, изменились ли данные с тех пор, как вы в последний раз их запрашивали.

Нет единого ответа на ваш вопрос, посколькуэто зависит от того, что делает ваше приложение.Как часто вам нужно получать обновленную информацию?Если ваши данные устарели в течение 5 минут, это действительно проблема?Можете ли вы получить данные из Facebook лениво, когда какое-то действие пользователя требует, чтобы они у вас были?

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

HTH

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

А как насчет этого: Система подписки Open Graph ?

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

Вы можете использовать строковый параметр since = запроса API Graph.Вот какой-нибудь псевдокод, чтобы помочь вам в этом

var usersLastPostDate = GetLastPostDateFromDataStore(userId);
if(usersLastPostDate not populated) {
   streamItems = GraphApiGet(userId, "me/feed")
   lastStreamItemDate = GetNewestStreamItemDate(streamItems)
   StoreLastPostDateIntoDataStore(userId, lastStreamItemDate )
}
else {
   streamItems = GraphApiGet(userId, "me/feed?since=" + usersLastPostDate )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...