ruby-on-rails - rails - omniauth-google-oauth2
Obteniendo "Error: redirect_uri_mismatch" con google_oauth2 (5)
Compartiendo una solución muy simple de copiar y pegar que funcionó para mí.
Copié todo lo que estaba especificando en mi código como redirectUri
es decir, "redirect_uri": "http://127.0.0.1:3001/"
y pegué el value
de esta key
dentro de la configuración de Google que solicita URI de redireccionamiento autorizado . De esta manera estoy asegurado que ambos parámetros son los mismos.
Si se calculara la url
, la console.log()
y la copiaría desde la ventana de la consola antes de pegarla en la configuración de Google.
Las URL parecen correctas (las actualicé por última vez ayer):
Los archivos también:
omniauth.rb:
provider :google_oauth2, ''MY_CLIENT_ID.apps.googleusercontent.com'', ''MY_CLIENT_SECRET'',
:scope => ''https://mail.google.com/mail/feed/atom/''
Error: redirect_uri_mismatch
The redirect URI in the request: http://localhost:3000/auth/google_oauth2/callback did not match a registered redirect URI
header.html.erb
<li><%= link_to "Sign in with Google", "auth/google_oauth2" %></li>
rutas.rb:
match ''/auth/:provider/callback'', to: ''sessions#omniauth_create''
Pero estoy recibiendo esto:
> Error: redirect_uri_mismatch The redirect URI in the request:
> http://localhost:3000/auth/google_oauth2/callback did not match a
> registered redirect URI
(Twitter y Facebook OmniAuth están funcionando perfectamente)
No estoy seguro de cuál es el problema. ¿Alguna sugerencia para arreglar esto?
EDITAR
Cambié el URI a http
...:
Pero sigue recibiendo el mismo error.
Hay un problema relativamente reciente con omniauth-oauth2
gema versión 1.4
https://github.com/intridea/omniauth-oauth2/issues/81#issuecomment-151038559
La solución temporal es degradar esa gema explícitamente en el Gemfile
gem ''omniauth-oauth2'', ''~> 1.3.1''
Intenté todo lo anterior pero no funcionó para mí. Al final, en mi mensaje de error noté que mi devolución de llamada era ligeramente diferente. Tuve un usuario entre localhost: 3000 y auth. No estoy realmente seguro de por qué.
http://localhost:3000/users/auth/google_oauth2/callback
Lo cambié, esperé 30 minutos y funcionó.
Parece que la solicitud está llegando a http://localhost:3000/auth/google_oauth2/callback
, pero su URI de redireccionamiento especificado que coincide con el patrón similar es para https
. Añadir http://localhost:3000/auth/google_oauth2/callback
a su lista de redirecciones puede resolver ese problema.
EDITAR: Otra solución potencial es incluir un trailing /
en los URI de redireccionamiento correspondientes, que parecían funcionar en este caso.
foo
vi config / initializers / omniauth.rb OmniAuth.config.full_host = ''https://localhost:3000'' Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, ''google_client_id'', ''google_client_secret'' end