socorrist.app

El login funciona en el preview pero no en mi dominio

Tu inicio de sesión no está roto: está protegido. Supabase, y cualquier proveedor de login, solo acepta devolver al usuario a direcciones que tú has declarado de antemano. Tu dominio nuevo no está en esa lista, así que el proceso se corta justo en el momento de volver.

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.

Por qué te pasa

Un inicio de sesión no es una sola petición: es un viaje de ida y vuelta. El usuario sale de tu app hacia el proveedor, se identifica allí, y el proveedor lo devuelve a tu app con la sesión. Ese último paso es el peligroso, porque si cualquiera pudiera decidir a qué dirección se devuelve al usuario ya identificado, podría desviar sesiones ajenas a su propia web. Por eso existe una lista blanca de direcciones permitidas, y por eso mientras tu dominio no esté en ella el viaje no se completa.

Mientras trabajabas, la dirección de tu app era la del preview y estaba declarada, así que todo funcionaba. Al conectar el dominio, la dirección cambió y la lista se quedó como estaba. Nada se rompió: simplemente dejó de coincidir.

El síntoma cambia según qué falte. Si el usuario acaba en la dirección vieja del preview, es que la dirección principal sigue apuntando ahí. Si vuelve a tu dominio pero aparece inmediatamente como no identificado, la sesión se creó en el otro dominio y no viaja entre direcciones distintas. Y si ve directamente un error de dirección no permitida, es la lista blanca hablando claro.

Si además usas login con Google o con GitHub, hay una segunda lista que actualizar, en la consola de ese proveedor. Es el motivo por el que mucha gente hace el cambio en Supabase, comprueba que el login por correo ya funciona, y sigue con el de Google roto.

Lo que este error no significa

Arréglalo tú, gratis

Todo en paneles, sin tocar código. Lo importante es hacer las dos listas si usas login con proveedores externos, porque quedarse en la primera es el error habitual.

  1. 1En Supabase, entra en Authentication y luego URL Configuration. En Site URL pon la dirección de tu dominio, con https y sin barra al final. Este campo es también el que usan los correos de confirmación, así que si se queda apuntando al preview, los enlaces que reciben tus usuarios los llevarán allí.
  2. 2En esa misma pantalla, en Redirect URLs, añade tu dominio permitiendo cualquier ruta por debajo. Añade también la dirección de las previsualizaciones de tu hosting, si quieres seguir probando ahí, y la de tu entorno local. Son varias líneas: no sustituyas, suma.
  3. 3Si tienes login con Google, GitHub u otro proveedor, entra en la consola de ese proveedor y añade en sus direcciones de retorno autorizadas la dirección de retorno de Supabase, que es la de tu proyecto terminada en /auth/v1/callback. Sin esto, ese botón concreto seguirá fallando aunque el resto funcione.
  4. 4Revisa las variables de entorno de tu hosting por si hay alguna que guarde la dirección del sitio y siga apuntando al preview. Si la cambias, vuelve a desplegar.
  5. 5Prueba el flujo entero en una ventana de incógnito: entra, cierra la pestaña, vuelve a abrir la app y comprueba que te sigue reconociendo. Y si usas confirmación por correo, date de alta con una dirección de prueba y comprueba que el enlace del correo lleva a tu dominio y no al viejo.

Si el usuario entra y aparece desconectado al instante, no sigas buscando en el código: la sesión se está creando en un dominio y leyendo en otro. Las sesiones no viajan entre direcciones distintas, ni siquiera entre tu dominio con www y sin www.

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 pegarle a tu agente

Mi app funciona bien en el preview pero al conectar mi dominio propio nadie puede iniciar sesión.

Necesito que hagas esto:
1. Busca en el proyecto todos los sitios donde se construye una dirección de retorno para el inicio de sesión o para la confirmación por correo, y dime si están escritas directamente en el código o si salen de una variable.
2. Si alguna está escrita directamente, cámbiala para que se calcule a partir de la dirección real desde la que se está sirviendo la app, de modo que funcione igual en local, en preview y en mi dominio.
3. Comprueba si hay alguna variable de entorno con la dirección del sitio y dime cuál es y qué valor debería tener ahora.
4. Revisa que la app trate correctamente el estado intermedio de "todavía no sé si hay sesión": si al volver del login la app decide demasiado pronto que no hay usuario, expulsará a gente que sí ha entrado bien.
5. Dime la lista exacta de direcciones que tengo que declarar en la configuración de URLs de Supabase, y si uso proveedores externos, cuáles tengo que añadir en la consola de cada proveedor.

No cambies la lógica de autenticación: esto es un problema de direcciones declaradas, no de código de login.

¿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.

Cita a partir de mañana

Agendar revisión

99 €

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

199 €

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 lo arregla

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.