我有一个带有devise 1.5.3
,omniauth 1.0.1
和omniauth-github 1.0.1
的Rails 3.1应用。
配置/初始化/ devise.rb
config.omniauth :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
配置/ routes.rb中
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
密钥和密钥设置为Heroku变量,应用程序在Github上注册。单击您发送给Github的链接,进行身份验证,然后使用代码和auth成功的所有信息发送回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>
,重要的部分是:
{{1}}
我想知道这篇文章是否仍然有效,因为Github现在有new v3 API。
有可能只将我需要的代码放在回调控制器的失败方法中,但感觉有点肮脏和hackish。
我们非常感谢任何建议。
答案 0 :(得分:0)
我不确定这是否会有所帮助,但仅在昨天,当我尝试使用omniauth gem与github进行身份验证时,我有点得到同样的错误。
最后,我最终以github的方式将client_id,client_secret和redirect_uri发送到/github.com/oauth/authorize
并获得了redirect_uri的回调。