我正在阅读 Facebook 平台开发这本书,以便尝试为 Facebook 编写一个小游戏,我遇到了一个“小”问题:我试图在每次登录时将用户插入数据库在我的电脑里。我正在使用书中写的几种方法,但似乎存在一些问题:
我似乎无法使用用于 RoR 的 Facebooker 帮助程序从 Facebook 检索 session_key,因此该值在我的数据库表中为空。
每次我重新加载网页时,我都可以看到即使 facebook_id 相同,同一用户也会在另一行中添加到我的数据库表中,尽管这不应该;如果发生变化,它应该更新属性 session_key - 无论如何,现在它是空的。
这些是我用来执行所有这些操作的三种方法:
def self.for(facebook_id,facebook_session=nil)
user = User.find_or_create_by_facebook_id(facebook_id)
unless facebook_session.nil?
user.store_session(facebook_session.session_key)
end
end
def store_session(session_key)
if self.session_key != session_key
update_attribute(:session_key, session_key)
end
end
# Re-create a Facebooker::Session object outside a request
def facebook_session
@facebook_session ||= returning Facebooker::Session.create do |session|
# Facebook sessions are good for only one hour storing
session.secure_with!(session_key,facebook_id,1.hour.from_now)
end
end
非常感谢大家!1.
最佳答案
嘿,遗憾的是 facebook 一直在更改其 API!
确保本书是最新的,并且在编写本书时没有任何 API 发生变化。还要检查 gem 是否也是最新的。
我个人使用http://github.com/chrisdinn/hyper-graph在与 Facebook 打交道时。它调用 facebook 图 (graph.facebook.com)
关于ruby-on-rails - 使用 Facebooker 和 Ruby on Rails 的 session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448606/