我想首先生成一个模型来保存这些信息:
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
然后我耙了DB。
然后我创建文件$ RAILS_ROOT / jobs / update_facebook.rb:
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
答案 0 :(得分:2)
这个表格有点冗余......你怎么知道何时使用数据库数量的喜欢而不是去API获取喜欢的数量?你可能会比你需要的更多地查询api方式,并且查询API很糟糕,因为它很慢。
我还没有在我的应用程序中实现这种缓存,但我知道这样做的最佳方式是:
您缓存所有API响应
您订阅了您正在跟踪的对象,并通过Facebook实时更新实现回调内容(http://developers.facebook.com/docs/reference/api/realtime/)
有了这个,当对象发生变化时,facebook会ping你的应用程序(在链接中以某种方式描述)
当facebook通知对象更改时,您会在API调用中删除缓存,因此您的应用只会在发生更改时请求API
答案 1 :(得分:0)
这个比我做的更简单。只需使用迁移向用户模型添加列:
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