Facebook должен ли я хранить список друзей пользователя в своей собственной базе данных?

Я разрабатываю приложение (Flash/AS3), которое подключается к Facebook. После того, как пользователь войдет в систему, мне нужно получить список его друзей (только идентификаторы), проверить, является ли кто-либо из них пользователем моего приложения (через реестр в базе данных), обновить список, добавив флаг для каждого пользователя, который также пользователя приложения, а затем делать что-то с обновленным списком. Мой вопрос:

  • должен ли я запросить список друзей, выполнить проверку и получить данные во Flash при запуске приложения? Мне пришлось бы ждать ответа от Facebook плюс время на выполнение скрипта (php); У меня была бы только одна таблица с информацией о пользователях приложения;

or

  • должен ли я хранить всех друзей пользователя в своей собственной базе данных и выполнять задание cron, автоматически обновляющее (возможно, один раз в день) мою базу данных, то есть запрашивать список друзей каждого из пользователей моего приложения, выполнять проверку, удалять дубликаты и т. д. так далее ? В этом случае у меня будет таблица с пользователями приложения, таблица со всеми друзьями моих пользователей (которых, конечно, могут быть тысячи) и таблица user_friends, чтобы связать обе предыдущие таблицы;

примечания: - Я использую PHP/cURL для выполнения запросов к Graph API - База данных MySQl - Я, вероятно, также буду проверять друзей в Twitter и G+ для каждого пользователя (поэтому скрипт может занять еще больше времени, хотя я мог бы пройти через каждой сети в отдельных шагах)

Как вы думаете, что является лучшим подходом? Я не возражаю против периода «загрузки» в приложении. На данный момент у меня уже почти готов первый подход, но коллега предложил второй, чтобы пользователю приложения не пришлось ждать ответа Facebook/Twitter/G+/script. Но... разве это не пустая трата ресурсов? Я имею в виду, что у Facebook и т. Д. Уже есть подключения пользователей / друзей ... получу ли я что-нибудь, реплицируя это в моей собственной БД и выполняя задания cron, выполняющие обновления, скрытые от пользователей приложения?

Надеюсь, я ясно выразился! Спасибо!


person Edd    schedule 03.04.2012    source источник


Ответы (1)


Однажды я столкнулся с похожей проблемой. Вы не сможете регулярно обновлять свою базу данных, потому что обычно вам нужен активный пользователь (=токен доступа) для получения списка друзей этого пользователя. Раньше вы могли запросить разрешение «offline_access», но это разрешение устарело: https://developers.facebook.com/roadmap/offline-access-removal/

Я решил записать идентификаторы всех друзей в текстовый файл (идентификатор пользователя в виде имени файла: 123456789.txt) на моем сервере во время первого запуска моего приложения (показывая счетчик и текст с надписью «загрузка друзей ...»). Всякий раз, когда приложение запускалось впоследствии, я вытаскивал идентификаторы из этого файла.

Вы можете инициировать обновление этого файла, проверив дату его создания. Если он «слишком старый», удалите его и создайте заново после того, как прочитаете все идентификаторы друзей. Таким образом, файловый кеш будет создаваться в фоновом режиме и не будет замечен пользователем.

person Felix    schedule 04.04.2012
comment
Я не знал, что «offline_access» устарел (будет) :/ . Так что я думаю, вы правы - если токены больше не являются постоянными, автоматические обновления не будут работать. Тем не менее, ваше решение, похоже, подходит для хранения кеша идентификаторов друзей. Но, как вы думаете, это необходимо? Может ли Facebook так долго получать список друзей? В любом случае, я оставлю приложение как есть прямо сейчас (вариант 1 в моем вопросе), и когда у меня будет все остальное, я проведу несколько тестов и вернусь к нему. Спасибо! ;) - person Edd; 04.04.2012
comment
Я только что понял, что в Graph API доступны обновления в режиме реального времени (developers.facebook.com/docs/reference/api/realtime), что означает, что можно подписаться на изменения в некоторых полях/соединениях (список друзей пользователя — один из них). ), а Facebook сам отправит изменения в запрос на выбранный нами URL-адрес, что позволит обновлять/кешировать данные пользовательских приложений. - person Edd; 04.04.2012
comment
вы можете получить список друзей по токену доступа к приложению - person Pooya Estakhri; 22.02.2014