Traducido automáticamente del inglés.

Leer en inglés
Proxy Mail QA

Problemas comunes de registro e inicio de sesión de Firebase y cómo solucionarlos

Firebase Authentication rara vez da errores visibles. Un correo de verificación que nunca se pidió, un correo de restablecimiento para una dirección cuya existencia no confirma, un usuario que verificó pero sigue pareciendo no verificado: en cada caso parece que no pasó nada. Esto es lo que ocurre y lo que hay que cambiar.

Actualizado el

Los detalles siguientes provienen de la documentación de Firebase del 23 de octubre de 2026. Consúltala para ver los límites actuales. Para lo básico, qué envía Firebase y cómo probarlo, empieza por Prueba los correos de Firebase Authentication.

El correo nunca llega

Nada lo solicitó. createUserWithEmailAndPassword crea la cuenta y no envía ningún correo. Tu código de registro tiene que llamar a sendEmailVerification para el nuevo usuario. Si no lo hace, la cuenta queda sin verificar y quien prueba espera en vano.

La dirección no tiene cuenta. Con la protección contra enumeración de correos, activada por defecto en proyectos creados a partir del 15 de septiembre de 2023, sendPasswordResetEmail solo envía cuando la dirección pertenece a una cuenta, y no devuelve ningún error cuando no es así. Una prueba de restablecimiento con una dirección que nunca se registró pasa en tu app y no recibe nada. Regístrate primero y luego restablece.

Se agotó un límite diario. En el plan gratuito Spark, Firebase envía 5 inicios de sesión con enlace por correo al día, 150 restablecimientos de contraseña y 1.000 correos de verificación. El inicio de sesión sin contraseña deja de funcionar tras la quinta prueba del día. Añade facturación (Blaze) para staging, o prueba el inicio de sesión con enlace por correo con moderación.

Está en spam. Por defecto, los correos llegan desde noreply@, la dirección firebaseapp.com de tu proyecto, en la que algunas bandejas de entrada no confían. Configura tu propio dominio en las plantillas de correo de la consola. Una dirección de Proxy Mail QA los recibe de todos modos, así que puedes distinguir “no enviado” de “enviado a spam”.

Estás usando el emulador. El emulador de Auth no envía correos: muestra cada enlace de verificación, restablecimiento e inicio de sesión en la terminal donde se ejecuta y en la pestaña Logs de Emulator Suite, y los ofrece en un endpoint REST para las pruebas. Prueba con un proyecto de staging real antes del lanzamiento.

El registro falla

El inicio de sesión falla con auth/invalid-credential

Con la protección contra enumeración, una contraseña incorrecta y una dirección desconocida dan el mismo error (INVALID_LOGIN_CREDENTIALS, que el SDK web informa como auth/invalid-credential). Las pruebas que esperan auth/user-not-found o auth/wrong-password empiezan a fallar, y también las apps que muestran un mensaje distinto para cada caso. Comprueba ese único error en su lugar.

Se hizo clic en el enlace, pero la app sigue diciendo “verifica tu correo”

El objeto User que tiene tu app conserva el valor de emailVerified que tenía cuando la persona inició sesión. Después de que haga clic en el enlace en otra pestaña, llama a user.reload(), y a user.getIdToken(true) si tus reglas de seguridad o tu backend leen el claim email_verified. Hasta entonces, la app y tus reglas siguen viendo un usuario sin verificar.

El enlace falla

El inicio de sesión con enlace por correo vuelve a pedir el correo

El inicio de sesión con enlace por correo termina en el navegador que solicitó el enlace: tu app guarda la dirección allí (normalmente en localStorage) y la vuelve a leer cuando se abre el enlace. Si abres el enlace en otro dispositivo o navegador, la propia guía de Firebase indica volver a pedir la dirección, para evitar la fijación de sesión. Es lo esperado. Quienes prueban deben abrir el enlace donde empezaron. En una app móvil, el enlace también tiene que abrir la app, lo que funciona de otra forma desde que Dynamic Links dejó de funcionar: consulta Inicio de sesión con enlace por correo de Firebase para apps móviles.

Compruébalos todos de una vez

  1. Crea una dirección de Proxy Mail QA nueva para cada escenario: usuario nuevo, restablecimiento de contraseña (en una dirección que ya registraste), inicio de sesión con enlace por correo.
  2. Recorre el flujo en tu app. El enlace aparece en la fila de la dirección en segundos, o nunca, lo que te indica que no se envió nada.
  3. Mira la fila: un enlace a localhost aparece marcado, y la bandeja de entrada muestra el remitente y las comprobaciones de cada correo. checkEmail con expectHost hace fallar una prueba cuyo enlace lleve a cualquier sitio que no sea el tuyo.
  4. Abre el enlace en el mismo navegador y luego comprueba que tu app muestre al usuario como verificado sin cerrar sesión y volver a iniciarla.

¿Lo creaste con Antigravity u otra herramienta de IA? Problemas en el registro e inicio de sesión de apps hechas con vibe coding explica lo que las apps generadas suelen hacer mal además de esto.

Úsalo en tu próxima prueba de registro

Plan gratuito, sin tarjeta de crédito. Crea una dirección y mira cómo llega el código o el enlace.

Crear una cuenta gratuitaAbrir la aplicación

Preguntas

¿Por qué Firebase no envió un correo de verificación después del registro?

Crear una cuenta con createUserWithEmailAndPassword no envía nada. Tu app tiene que llamar a sendEmailVerification para el nuevo usuario, y muchos formularios de registro nunca lo hacen.

¿Por qué un restablecimiento de contraseña para una dirección desconocida dice que funcionó?

Con la protección contra la enumeración de correos, activada de forma predeterminada en los proyectos creados desde el 15 de septiembre de 2023, Firebase envía un correo de restablecimiento solo cuando la dirección tiene una cuenta, y nunca avisa cuando no la tiene. Prueba los restablecimientos con una dirección que hayas registrado antes.

El usuario hizo clic en el enlace de verificación. ¿Por qué mi app sigue diciendo que no está verificado?

El objeto del usuario con sesión iniciada conserva el estado que tenía al iniciar sesión. Llama a reload() en el usuario, y a getIdToken(true) si tus reglas de seguridad leen email_verified, o inicia sesión de nuevo.

¿Cuántos correos puede enviar un proyecto gratuito?

En el plan Spark, 1.000 correos de verificación, 150 restablecimientos de contraseña y solo 5 inicios de sesión con enlace por correo al día. Blaze sube estos límites. La tabla completa está en Prueba los correos de Firebase Authentication.

¿Creaste tu app con una herramienta de IA? Elige la tuya

Firebase es una marca registrada de Google LLC. Proxy Mail QA es independiente y no está afiliado a ellos ni cuenta con su respaldo.

¿Tienes una pregunta sobre esta página?

Pregunta en cualquier idioma. La documentación puede responderte de inmediato, o puedes enviar tu pregunta al equipo de Proxy Mail QA, que responde en inglés.