Cómo agregar verificación de correo electrónico y recuperación de contraseña en Firebase Auth

Firebase Authentication no solo permite registrar e iniciar sesión con correo y contraseña, sino que también ofrece herramientas esenciales para proteger tu aplicación y mejorar la seguridad del usuario: la verificación del correo electrónico y la recuperación de contraseña.

En esta guía aprenderás cómo:

  • Enviar correos de verificación al registrar un usuario

  • Comprobar si el correo ha sido verificado

  • Enviar correos de recuperación de contraseña

Estas funcionalidades no solo mejoran la seguridad, sino también la confianza y experiencia de tus usuarios.

🚀 Paso 1: Verificar el correo electrónico después del registro

Después de registrar un usuario, puedes enviarle un correo de verificación con:

import 'package:firebase_auth/firebase_auth.dart';

Future<void> registrarUsuario(String email, String password) async {
final credential = await FirebaseAuth.instance.createUserWithEmailAndPassword(
email: email,
password: password,
);

// Enviar correo de verificación
await credential.user?.sendEmailVerification();
}

🔐 Comprobar si el correo fue verificado

Para restringir el acceso solo a usuarios con correo verificado:

final user = FirebaseAuth.instance.currentUser;

if (user != null && user.emailVerified) {
// Acceso permitido
} else {
// Mostrar mensaje o forzar verificación
}

🔄 Para actualizar el estado de verificación sin reiniciar la app:

await user?.reload();

📦 Paso 2: Enviar correo de recuperación de contraseña

Si el usuario olvidó su contraseña, puedes enviar un email con un enlace de restablecimiento:

Future<void> recuperarContrasena(String email) async {
await FirebaseAuth.instance.sendPasswordResetEmail(email: email);
}

Puedes usarlo en un formulario de “¿Olvidaste tu contraseña?” en tu app:

TextField(
controller: emailController,
decoration: InputDecoration(labelText: 'Correo electrónico'),
),
ElevatedButton(
onPressed: () {
recuperarContrasena(emailController.text.trim());
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Se envió un enlace de recuperación')),
);
},
child: Text('Recuperar contraseña'),
),

🎯 Buenas prácticas recomendadas

  • Siempre verifica si el correo del usuario ha sido confirmado antes de permitir el acceso completo.

  • Personaliza los mensajes de confirmación o recuperación desde Firebase Console > Plantillas de correo electrónico.

  • Agrega mensajes claros en la app indicando cuándo deben revisar su bandeja de entrada (y carpeta de spam).

🎉 Conclusión

Agregar verificación de correo y recuperación de contraseña con Firebase Auth es sencillo pero crucial para garantizar la seguridad y profesionalismo de tu aplicación Flutter. Estas funciones ayudan a proteger la identidad de los usuarios y a evitar accesos no autorizados.

Comentarios

Entradas más populares de este blog

Cómo gestionar el estado de autenticación y proteger las rutas de tu app Flutter

Cómo manejar notificaciones push avanzadas con Firebase Cloud Messaging y Flutter

Cómo usar Firestore en Flutter para guardar y mostrar datos en tiempo real.