ruby-on-rails - 使用 Facebooker 和 Ruby on Rails 的 session 问题

标签 ruby-on-rails ruby facebook rubygems facebooker

我正在阅读 Facebook 平台开发这本书,以便尝试为 Facebook 编写一个小游戏,我遇到了一个“小”问题:我试图在每次登录时将用户插入数据库在我的电脑里。我正在使用书中写的几种方法,但似乎存在一些问题:

  1. 我似乎无法使用用于 RoR 的 Facebooker 帮助程序从 Facebook 检索 session_key,因此该值在我的数据库表中为空。

  2. 每次我重新加载网页时,我都可以看到即使 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/

相关文章:

ios - 在 RestKit (iOS) 中使用 force_load 链接器标志

ios - openActiveSessionWithReadPermissions 始终显示 webview (iOS)

ruby-on-rails - 将文件传递给事件作业/后台作业

ruby - 'string' 到 ['s' , 'st' , 'str' , 'stri' , 'strin' , 'string' ]

jquery - 添加 Facebook 点赞按钮

mysql - 安装 mysql2 gem

ruby - 轻松备份长时间运行的 ruby​​ 进程

ruby-on-rails - rails : Sidekiq unknown driver

javascript - 在 Rails 2.3.x 中获取 Rails 3 样式 UJS 的插件/Gem?

ruby-on-rails - 在两个 Rails4 应用程序之间共享 session