Google OAuth 2 redirect_uri_mismatch - OmniAuth Rails app

别等时光非礼了梦想. 提交于 2019-12-05 01:37:00

try this way :

add require "omniauth-google-oauth2" to devise.rb in config/initializers folder

add http://localhost:3000/users/auth/google_oauth2/callback into Redirect URL in google API console https://console.developers.google.com

restart server

Mine solution is to force redirect_url in both (code/token) stages, devise.rb initializer:

CALLBACK_URL = 'https://SOMESERVER/users/auth/google_oauth2/callback'

Devise.setup do |config|
  config.omniauth :google_oauth2,
    "SOMECLIENTID.apps.googleusercontent.com",
    "SOMEKEY",
    {
    :client_options => {:ssl => {:ca_file => 'C:\Ruby21\cacert.pem'}},
    :provider_ignores_state => true,
    :prompt => "select_account",
    :redirect_uri => CALLBACK_URL,
    setup: (lambda do |env|
      request = Rack::Request.new(env)
      env['omniauth.strategy'].options['token_params'] = {:redirect_uri => CALLBACK_URL}
    end)
    }
end

there is discussion about the issue here: https://github.com/zquestz/omniauth-google-oauth2/issues/181

Be careful of what client id you are setting.
Google API provides two:
Client ID for Google Compute and App Engine
Client ID for web applications

You need to use Client ID for web applications

Make sure you set up the Product Name and Email address via the Consent Screen Link.

Per the omniauth-google-oauth2 documentation you need to:

Go to 'https://console.developers.google.com' Select your project. Click 'APIs & auth' Make sure "Contacts API" and "Google+ API" are on. Go to Consent Screen, and provide a 'PRODUCT NAME' Wait 10 minutes for changes to take effect.

I had the same issue, made the updates, waited 10 minutes, still nothing, went to lunch, then it started to work. Guess patience was part of the key to success on this one.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!