4

Rails 3.1 アプリにdevise 1.5.3omniauth 1.0.1、およびomniauth-github 1.0.1があります。

config/initializers/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 コールバック ルートに送り返されます。

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 で認証しようとしたときに、同じエラーが発生していました。

最後に、client_id、client_secret、およびredirect_uriを送信するgithubの方法でそれを行い、/github.com/oauth/authorizeredirect_uriでコールバックを取得しました。

リンクはこちら

于 2012-02-08T13:22:56.357 に答える