Rails3omniauth google 身份验证返回用户身份
我的 Omniauth 集成适用于本地开发,但在 google 上暂存失败。
require 'omniauth/openid'
require 'openid/store/memcache'
Rails.application.config.middleware.use OmniAuth::Builder do
OmniAuth.config.full_host = "http://xx.xx.xxx/"
# dedicated openid
provider :open_id, OpenID::Store::Memcache.new(Dalli::Client.new), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end
我收到此错误消息:
Started GET "/auth/failure?message=invalid_credentials" for 58.71.19.178 at 2011-12-01 02:22:20 +0000 由 ErrorsController#routing 作为 HTML 进行处理 参数:{“message”=>“invalid_credentials”,“a”=>“auth/failure”} 呈现 public/404.html (0.1ms) Completed 404 Not Found in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms)
另外,for 中的 ip 与我的 OmniAuth.config.full_host 中的不一样,也许这可能会导致问题?
My Omniauth integration works on local development but fails for google on staging.
require 'omniauth/openid'
require 'openid/store/memcache'
Rails.application.config.middleware.use OmniAuth::Builder do
OmniAuth.config.full_host = "http://xx.xx.xxx/"
# dedicated openid
provider :open_id, OpenID::Store::Memcache.new(Dalli::Client.new), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end
I get a this error message:
Started GET "/auth/failure?message=invalid_credentials" for 58.71.19.178 at 2011-12-01 02:22:20 +0000
Processing by ErrorsController#routing as HTML
Parameters: {"message"=>"invalid_credentials", "a"=>"auth/failure"}
Rendered public/404.html (0.1ms)
Completed 404 Not Found in 1ms (Views: 0.6ms | ActiveRecord: 0.0ms)
Also the ip in for is not the same in my OmniAuth.config.full_host maybe that could be causing the issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
罪魁祸首是 apache 在不同的 ip 上发送和返回。
这个猴子补丁解决了这个问题。
The culprit was that apache sending and returning on different ips
This monkey patch fixed the issue.
我有类似的问题。似乎您的谷歌身份验证失败(可能是由于不同的原因 - 无效的凭据或用户拒绝访问),因此您收到对 /auth/failure 的回调 - 然后您得到 404。
您是否实现了
/auth 的路由/failure
在你的routes.rb中?在我当前的项目中:routes.rb 中
在
sessions_controller
中的I had a similar problem. Seems like your google authentication fails (can be for different reasons - invalid credentials, or user denied access), therefore you receive callback to /auth/failure -- and then you get 404.
Did you implement a route for
/auth/failure
in your routes.rb? In my current project:in
routes.rb
in
sessions_controller