2

在我的应用程序中重定向后,我遇到了会话丢失的问题。我们正在使用宝石“考拉”与 Facebook 集成。这个 gem 在 Rails 3.0 上运行良好,但我们没有升级到 Rails 3.2.12,它失败了,因为会话在重定向到 Facebook 后消失了。

我一直在调查和阅读很多关于类似问题的信息,但还没有得到任何解决方案。这里的关键是 2 个操作:

1) Publish_event 动作,我们设置 Koala 对象并连接 Facebook:

def publish_event
   ...
   ...
   callback = url_for(......................)
   @oauth = Koala::Facebook::OAuth.new(Facebook::APP_ID, Facebook::SECRET, callback)
   session[:oauth] = @oauth

   redirect_to @oauth.url_for_oauth_code(:permissions => ["offline_access", "publish_stream", "manage_pages"])
end

该部分工作正常并成功连接到 Facebook。Facebook 重定向回我们的应用程序,然后调用第二个操作:

2)Facebook回调动作,我们发布我们想要的消息:

def facebook_callback  
  token = session[:oauth].get_access_token(params[:code])
  @graph = Koala::Facebook::API.new(token)
  .....
end

这里的问题是,重定向到 Facebook 后,会话没有加载(Rack::Session::Abstract::SessionHash:0x30027e4 尚未加载),所以我们无法继续,因为我们需要创建的原始 oauth Koala 对象与 Facebook 的连接,应该在会话中。

我将会话配置为 active_record_store,它在应用程序的其余部分运行良好,所以我在这里很困惑。

有人遇到过类似的事情吗?或者你有什么建议如何以不同的方式做到这一点?

谢谢 !

4

0 回答 0