auth

Invalid redirect URL

Tu app le ha pedido al proveedor de identidad que, cuando termine, devuelva al usuario a una dirección concreta. El proveedor ha mirado su lista de direcciones permitidas, no la ha encontrado, y se ha negado. Está haciendo exactamente lo que debe.

Revisado en agosto de 2026

De paso

Ya de paso: ¿tu app está exponiendo datos?

Analízala gratis mientras lees. Tarda treinta segundos y no toca nada.

Solo leemos lo que tu app ya le entrega a cualquier visitante.

Diagnóstico

Por qué te pasa

Esa lista existe por un motivo serio. Si cualquiera pudiera decidir a qué dirección se devuelve a un usuario recién identificado, bastaría con montar un enlace que mandara la sesión a una web ajena. La lista blanca es lo que lo impide, y por eso la comparación es literal y sin concesiones.

Y ahí está la trampa: literal significa literal. Una barra al final que sobra o que falta, http en vez de https, o el dominio con www cuando declaraste el que va sin www, son direcciones distintas para el proveedor aunque a ti te parezcan la misma.

El caso que más se repite es el de las previsualizaciones. Cada despliegue de preview genera una dirección nueva e irrepetible, así que declararlas una a una es imposible: hay que declarar un patrón con comodín que las cubra todas.

Y si el mensaje aparece solo con el botón de Google o de GitHub, mira en otro sitio. Esos proveedores tienen su propia lista, en su propia consola, y es independiente de la de Supabase.

Lo que este error no significa

  • No significa que tu app esté mal programada. Es una lista de configuración desactualizada, no código roto.
  • No has perdido usuarios ni sesiones. Los que ya estaban dentro siguen dentro; lo que falla es el viaje de vuelta de quien intenta entrar ahora.
  • No es un fallo de seguridad tuyo. Es una protección funcionando: preferimos verte este mensaje a que las sesiones se pudieran redirigir a cualquier parte.

Solución

Arréglalo tú, gratis

La clave es copiar la dirección exacta, no escribirla de memoria. La mitad de los intentos fallidos son por un carácter de diferencia.

  1. 01Consigue la dirección exacta que se está rechazando. Suele venir en el propio mensaje de error o en la barra del navegador, dentro de los parámetros. Cópiala tal cual, sin retocarla.
  2. 02En Supabase, ve a Authentication y luego URL Configuration. En Redirect URLs, pega esa dirección tal como la has copiado.
  3. 03Añade además un patrón con comodín para tu dominio, cubriendo cualquier ruta por debajo, y otro para las previsualizaciones de tu hosting. Sin ese segundo patrón, cada despliegue de preview volverá a fallar.
  4. 04Comprueba la coherencia con Site URL: si ahí has puesto tu dominio sin barra final, no declares las de retorno con barra final. Elige un criterio y respétalo en las dos.
  5. 05Si el fallo es con un proveedor externo, entra en su consola. En Google es la sección de credenciales de OAuth, y ahí hay que autorizar la dirección de retorno de tu proyecto de Supabase, la que termina en /auth/v1/callback.
  6. 06Prueba en incógnito. Si sigue fallando, compara carácter por carácter la dirección del error con la que has declarado: es casi siempre una barra, un guion o el www.

Los cambios en la consola de Google pueden tardar unos minutos en aplicarse. Si acabas de tocarlo y sigue fallando, espera cinco minutos antes de volver a cambiar nada, o acabarás persiguiendo un problema que ya habías resuelto.

Y esto para la parte de código

Pégaselo tal cual al agente que escribió tu app. Está redactado para que te diga lo que ha hecho, no solo para que lo haga.

Prompt para tu agente

Mi app da el error "Invalid redirect URL" al iniciar sesión.

Necesito que hagas esto:
1. Busca en el código todos los sitios donde se construye la dirección de retorno del login y enséñame exactamente qué valor produce cada uno en local, en preview y en producción.
2. Si alguna está escrita directamente en el código, cámbiala para que se calcule a partir de la dirección desde la que se está sirviendo la app.
3. Unifica el criterio de la barra final: que la dirección generada nunca la lleve, o que siempre la lleve, pero que sea consistente.
4. Dime la lista literal de direcciones y patrones que tengo que declarar en la configuración de URLs de Supabase para que funcionen local, previsualizaciones y dominio.

No cambies la lógica de autenticación: esto es configuración de direcciones declaradas.

Si no sale

¿Lo has intentado y sigue sin salir?

O el escáner de arriba ha encontrado algo y prefieres no tocarlo solo. En cualquiera de los dos casos esto ya es de los gordos y merece un humano: no es que no hayas sabido, es que has llegado al punto en que hace falta alguien que entre y lo vea por dentro.

Las 10 primeras apps son gratis. Estoy empezando y necesito casos reales. A cambio te pido permiso para contar después qué me encontré, sin decir de quién era la app ni enseñar tus datos. Sin tarjeta y sin suscripción: cuando se acaben las plazas empezaré a cobrar y lo diré aquí.

Cita a partir de mañana

Agendar revisión

Gratis

durante el lanzamiento

Elegimos hueco, miro tu app con calma y te digo qué pasa y cómo se arregla.

  • Sesión de trabajo en directo contigo
  • Diagnóstico del error y del riesgo real
  • Te quedas con el arreglo aplicado

Hoy, en cola prioritaria

Rescate exprés

Gratis

durante el lanzamiento

Entras en la cola de hoy. Reservas hueco y lo dejamos resuelto en el día.

  • Hueco el mismo día
  • Prioridad sobre las revisiones agendadas
  • Mismo trabajo, antes

Quién

Marc Sala

IT Manager

  • Analista de ciberseguridad certificado por Google

No es un rating anónimo de un marketplace: es la persona que va a entrar en tu app. Reviso el código, encuentro qué falla y lo arreglo contigo delante, explicándote qué ha pasado sin jerga.