Rails 4 + omniauth facebook - 检测到csrf

时间:2015-07-29 04:34:23

标签: facebook ruby-on-rails-4 devise omniauth omniauth-facebook

我正在使用我的RoR4应用,以便用户通过现有的facebook帐户登录。我注册了一个Facebook应用程序(一个实时和测试版本)并将其api和秘密存储在development.rb中。我使用了omniauth-facebook并设计了宝石并遇到了“Csrf detected”问题。

我的应用程序代码的灵感来自于这篇博文: http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/

我确实看到了2年前(Rails + omniauth + facebook - csrf detected)发布的stackoverflow帖子的解决方案 - 但最新的omniauth-facebook版本比发布的版本大得多。无论哪种方式,我试图回到omniauth-facebook gem到版本1.4.1,我仍然遇到了这个问题。

宝石

oauth2 (1.0.0)
omniauth (1.2.2)
omniauth-facebook (2.0.1)
omniauth-oauth2 (1.3.1)

想法?

错误记录

(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
(facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected

1 个答案:

答案 0 :(得分:3)

我在设备和omniauth-facebook上有类似的问题,但这是我的错误。

之前我在device.rbomniauth.rb初始化程序中都添加了facebook app id和secret(两者都是config/initializers文件夹中的初始化程序)。我从omniauth.rb删除了这些Facebook配置并重新启动了服务器,它可以工作。

请检查您的device.rb和其他与omniauth相关的初始值设定项。

可能有用..