我在 Rails 应用程序中使用omniauth-facebook gem 来允许用户通过 facebook 登录/注册。它运作良好。但我的问题是,当我单击取消按钮时,我收到以下错误
(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError
Started GET "/auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request." for 127.0.0.1 at 2012-05-18 11:42:36 +0530
怎么了?添加 /auth/failure => 'pages#home' 也不起作用。请帮忙
查看 https://github.com/intridea/omniauth/wiki/FAQ 的最后一部分,看看是否有帮助。建议添加
OmniAuth.config.on_failure = Proc.new { |env|
OmniAuth::FailureEndpoint.new(env).redirect_to_failure
}
到您的omniauth 初始化程序。这在本地对我有用,然后您只需要定义您的 /auth/failure 路线和操作。
我在本地调试(localhost)时遇到了同样的问题。
在公共网址上它有效,它可能需要 FB 才能“看到”你。
您可以在公共网址上进行测试,或者使用一些隧道之王(localtunnel是一个超级简单的示例)。
HTH
OmniAuth.config.on_failure = Proc.new { |env|
[302, {'Location' => 'http://localhost:3001/login'}, []]
}
用它来修复错误