Ruby on rails 3 针对Google进行身份验证时出现间歇性OmniAuth错误
当尝试使用Omniauth进行身份验证时,它在我的开发环境(Mac OSX Mavericks)中可以完美地工作,但在生产环境(Heroku)中大部分时间都失败。错误在“无效凭据”和“连接失败”之间有所不同。在所有情况下,我已经登录到我的谷歌帐户。在流程成功之前,我可能会在4到8次之间的任何地方出现一个或另一个错误 有人看到了吗?你能解释一下为什么会发生这种情况吗 Gem:oa_openid(0.3.2) config/routes.rb:Ruby on rails 3 针对Google进行身份验证时出现间歇性OmniAuth错误,ruby-on-rails-3,openid,omniauth,Ruby On Rails 3,Openid,Omniauth,当尝试使用Omniauth进行身份验证时,它在我的开发环境(Mac OSX Mavericks)中可以完美地工作,但在生产环境(Heroku)中大部分时间都失败。错误在“无效凭据”和“连接失败”之间有所不同。在所有情况下,我已经登录到我的谷歌帐户。在流程成功之前,我可能会在4到8次之间的任何地方出现一个或另一个错误 有人看到了吗?你能解释一下为什么会发生这种情况吗 Gem:oa_openid(0.3.2) config/routes.rb: ... resource :admin_session
...
resource :admin_session, only: %w(show create destroy)
match '/auth/googleapps/callback' => 'admin_sessions#create'
...
config/omniauth.rb:
require 'openid/store/filesystem'
Rails.application.config.middleware.use OmniAuth::Strategies::GoogleApps,
OpenID::Store::Filesystem.new('./tmp'),
name: 'googleapps', domain: 'booktrakr.com'
管理员会话控制器:
class AdminSessionsController < ApplicationController
# GET /admin_sessions
def show
redirect_to "/auth/googleapps?origin=#{params[:origin] || request.fullpath}" and return unless is_admin?
@session = authenticated_admin
end
# POST /admin_sessions
def create
authinfo = request.env['omniauth.auth']
uid = authinfo['uid']
unless uid =~ %r(^https?://(groundbreakingsoftware|booktrakr).com/openid)
raise "Bad hacker, no cookie"
end
self.authenticated_admin = authinfo
redirect_to request.env['omniauth.origin'], notice: 'Session was successfully created.'
end
# DELETE /admin_sessions
def destroy
self.authenticated_admin = nil
redirect_to root_url
end
end
class AdminSessionController
至少乍一看,切换到OAuth2()似乎解决了问题。谢谢,@Ashitaka 不确定是否相关,但谷歌已经弃用OpenID登录。