我将 OmniAuth 与 Devise 结合使用,以允许用户使用 facebook 登录或使用用户名和密码创建普通帐户。当我最初设置它时,我使用了来自 Railscasts 的优秀指导。 .在 2 个多月的时间里,一切都运行良好,但就在前几天,facebook 登录停止工作了。 OmniAuth 将您发送到 facebook 的身份验证,然后返回:http://localhost:3000/auth/failure?message=invalid_response
Google 没有关于导致此错误的原因或如何修复它的建议,OmniAuth 文档也没有。我也尝试过挖掘他们的代码,但我发现的这个错误的唯一提及是在 /oa-oauth/lib/omniauth/strategies/oauth.rb
中:
rescue ::MultiJson::DecodeError => e
fail!(:invalid_response, e)
end
有没有人见过这个错误!?知道它是什么或如何解决它?!这使我无法启动此应用程序,因此非常感谢任何帮助!
谢谢, JG
最佳答案
我在同样的情况下遇到过这个错误。 Devise 正在拯救一个不相关的异常并将其作为身份验证失败处理。我通过处理 Controller 中的异常抢占了 Devise:
# authentications_controller.rb
def create
omniauth = request.env["omniauth.auth"]
# Blah
# blah
# Blark!
rescue Exception => e
# Just spit out the error message and a backtrace.
render :text => "<html><body><pre>" + e.to_s + "</pre><hr /><pre>" + e.backtrace.join("\n") + "</pre></body></html>"
关于ruby-on-rails - OmniAuth 无效响应错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5528107/