我有一个带有devise 1.5.3
,omniauth 1.0.1
和的 Rails 3.1 应用程序omniauth-github 1.0.1
。
配置/初始化程序/devise.rb
config.omniauth :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
配置/路由.rb
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
密钥和秘密设置为 Heroku 变量,应用程序在 Github 上注册。单击发送到 Github 的链接,进行身份验证,然后将代码和验证成功的所有信息发送回 Github 回调路由。
问题是它被users/omniiauth_callbacks
控制器的故障方法拾取。我添加了一些put
语句以查看env['omniauth']
返回的内容。
env['omniauth.auth']
拥有来自 Github 的所有信息。
env['omniauth.error'].response
然而,它OAuth2::Response
包含很多信息,重要的部分是:
@parsed={"error"=>"bad_verification_code"}, @error=#<OAuth2::Error: OAuth2::Error>
我想知道这篇文章是否仍然有效,因为 Github 现在有了新的 v3 API。
可以将我需要的代码放在回调控制器的失败方法中,但这感觉有点肮脏和骇人听闻。
任何建议将不胜感激。