Ruby on rails 3 针对Google进行身份验证时出现间歇性OmniAuth错误

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

当尝试使用Omniauth进行身份验证时,它在我的开发环境(Mac OSX Mavericks)中可以完美地工作,但在生产环境(Heroku)中大部分时间都失败。错误在“无效凭据”和“连接失败”之间有所不同。在所有情况下,我已经登录到我的谷歌帐户。在流程成功之前,我可能会在4到8次之间的任何地方出现一个或另一个错误

有人看到了吗?你能解释一下为什么会发生这种情况吗

Gem:oa_openid(0.3.2)

config/routes.rb:

...
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登录。