我最近一直在面对这个问题。我在浏览器中收到此错误。
在我的cygwin中,它会重定向我并最终显示
ERROR -- omniauth: (facebook) Authentication failure! csrf_detected:
OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
E, [2015-04-16T11:21:15.660929 #10056] ERROR -- omniauth: (facebook)
Authentication failure! invalid_credentials:
OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detecte
我尝试了各种方法,但未能解决我的问题。
经过一些测试,我认为是我的配置问题,但仍然不知道如何修复它。似乎WardenOmniAuth无法接收来自facebook的回调,该回调一直保持循环和重定向,直到垃圾邮件将其杀死为止。
这是我的app.rb中的编码
failure = lambda{|e| Rack::Resposne.new("Can't login", 401).finish }
use Rack::Session::Cookie
use Warden::Manager do |config|
config.failure_app = failure
config.default_strategies :omni_facebook
end
use OmniAuth::Strategies::Facebook, ENV["APP_ID"], ENV["APP_SECRET"]
use WardenOmniAuth do |config|
config.redirect_after_callback = "/home"
end
答案 0 :(得分:1)
我找到了解决方案。似乎Warden_OmniAuth宝石有bug。当到达回调点并导致重复循环调用回调时,它会变得混乱。
所以我改为使用Warden gem,OmniAuth gem和OmniAuth-facebook gem。通过使用建设者和监狱长策略。