Как мне кэшировать данные вызовов Facebook в мою базу данных, чтобы рельсы могли использовать их локально? - PullRequest
1 голос
/ 16 августа 2011

Я хочу начать с создания модели для хранения этой информации:

rails g model UserData UID:string birthday:string likes:string location:string \n
activities:string books:string movies:string music:string tv:string \n
interests:string post_count:string friend_count:string

Затем я сгребаю БД.

Затем я создаю файл $ RAILS_ROOT / jobs / update_facebook.рб:

config = YAML::load(File.open("#{RAILS_ROOT}/config/facebook.yml"));
APP_ID = CONFIG['app_id']
fetching_app = FbGraph::Application.new(config['APP_ID']);
access_token = fetching_app.get_access_token(config['production']['client_secret']);

#Don't know what else to put in here

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Эта форма была бы немного избыточной ... как бы вы узнали, когда использовать базу данных с количеством лайков вместо того, чтобы обращаться к API для получения количества лайков?вы, вероятно, запросите API-интерфейс больше, чем нужно, и запрос API плох, потому что он медленный.

Я еще не реализовал этот вид кэширования в своем приложении, но я понимаю оптимальный способсделать это, как:

  • вы кешируете все ответы API

  • вы подписываетесь на отслеживаемый объект и реализуете функцию обратного вызова с FacebookОбновления в режиме реального времени (http://developers.facebook.com/docs/reference/api/realtime/)

  • . При этом Facebook будет проверять ваше приложение (каким-либо образом, описанным в ссылке), когда в объекте происходят изменения

  • вы сбрасываете кеш при вызове API, когда facebook уведомляет об изменении объекта, поэтому ваше приложение будет запрашивать API только при наличии изменений

, это процессИз того, что я понял ... Я уверен, что реализация в реальном времени вещей в Facebook сделает любое приложение чуть быстрее

0 голосов
/ 16 августа 2011

Этот был проще, чем я предполагал.Только что добавили столбцы в модель User с миграцией:

rails g migration AddDetailsToUsers likes:string bookes:string etc.

Затем просто сгребите миграцию и добавьте в контроллер следующее:

@graph = Koala::Facebook::GraphAPI.new(current_user.token)
current_user.likes = @graph.get_connections("me", "likes")
#Ditto for the other permissions
current_user.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...