2012-01-29 192 views
4

我有一個Rails 3.1應用程序,其中devise 1.5.3,omniauth 1.0.1omniauth-github 1.0.1也是如此。設計omniauth-github oauth2錯誤「bad_verification_code」

配置/初始化/ devise.rb

config.omniauth :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'] 

的config/routes.rb中

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do 
    get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru' 
end 

的密鑰和密碼都設置爲Heroku的變量,並在註冊應用程序上Github上。點擊您發送到Github的鏈接,進行身份驗證,然後將其發送回Github回調路由,並附上代碼和auth成功的所有信息。

問題是,它正在被控制器的故障方法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上都有自己的new v3 API

只需將我需要的代碼放在回調控制器的失敗方法中,但感覺有點髒和駭人聽聞就可能了。

任何建議將不勝感激。

回答

0

我不確定這是否會有所幫助,但只有昨天當我嘗試使用omniauth gem進行身份驗證時,我有點得到同樣的錯誤。

最後,我最終以github的方式將client_id,client_secret和redirect_uri發送到/github.com/oauth/authorize並獲得了redirect_uri上的回調。

Heres the link

+0

感謝您的迴應!所以你會重新將回調階段重定向到oauth授權url,而不是https://github.com/login/oauth/access_token? – LupineDev 2012-02-15 18:17:01

+0

向你提到的url發送一個請求,然後在提到的uri上進行回調,這是可選的。 – ktkaushik 2012-02-16 05:49:32