4

我有一个带有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

可以将我需要的代码放在回调控制器的失败方法中,但这感觉有点肮脏和骇人听闻。

任何建议将不胜感激。

4

1 回答 1

0

我不确定这是否会有所帮助,但就在昨天,当我尝试使用omniauth gem 向github 进行身份验证时,我遇到了同样的错误。

最后,我最终以 github 方式将 client_id、client_secret 和 redirect_uri 发送到,/github.com/oauth/authorize并在 redirect_uri 上获得了回调。

这是链接

于 2012-02-08T13:22:56.357 回答