Rails 4 + omniauth facebook - 检测到 csrf

Rails 4 + omniauth facebook - csrf detected

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

我的应用程序代码受到此博客的高度启发post: http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/

我确实在 2 年前 (Rails + omniauth + facebook - csrf detected) 的 Whosebug post 中看到了一个解决方案 - 但最新的 omniauth-facebook 版本比 posted 版本大得多。无论哪种方式,我都尝试将 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

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

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

请检查您的 device.rb 和其他与 omniauth 相关的初始化程序。

可能有用..