У меня есть приложение Rails 3.1 с devise 1.5.3
, omniauth 1.0.1
и omniauth-github 1.0.1
.Devise omniauth-github oauth2 error «bad_verification_code»
конфигурации/Инициализаторы/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, аутентифицировали, а затем отправили обратно на маршрут обратного вызова 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.
Можно было бы просто поместить код, который мне нужен, в метод отказа контроллера обратного вызова, но он чувствует себя грязным и хакерским.
Любые предложения были бы очень признательны.
С благодарностью! Итак, вы перенаправили бы фазу обратного вызова на urautu urify снова вместо https://github.com/login/oauth/access_token? – LupineDev
отправьте запрос на указанный вами URL, а затем получите обратный вызов по указанному uri, который является необязательным снова. – ktkaushik