Introducción
La autenticación por correo electrónico y contraseña es una de las formas más comunes y seguras de autenticar a los usuarios en una aplicación. Firebase Authentication proporciona una manera sencilla de implementar esta funcionalidad, permitiendo a los desarrolladores centrarse en la creación de aplicaciones sin preocuparse por la infraestructura de autenticación.
Configuración Inicial
Paso 1: Habilitar la Autenticación por Correo Electrónico y Contraseña
- Accede a la consola de Firebase: Ve a Firebase Console.
- Selecciona tu proyecto: Si no tienes un proyecto, crea uno nuevo.
- Navega a la sección de autenticación: En el menú de la izquierda, selecciona "Authentication".
- Habilita el proveedor de correo electrónico y contraseña:
- Haz clic en la pestaña "Sign-in method".
- Encuentra "Email/Password" y haz clic en el botón de edición (ícono de lápiz).
- Activa la opción y guarda los cambios.
Paso 2: Agregar Firebase a tu Aplicación
Sigue las instrucciones en la consola de Firebase para agregar Firebase a tu aplicación. Esto generalmente implica:
- Registrar tu aplicación: Proporciona el nombre del paquete de tu aplicación.
- Descargar el archivo de configuración: Para Android, es
google-services.json
; para iOS, esGoogleService-Info.plist
. - Agregar el archivo de configuración a tu proyecto: Coloca el archivo en el directorio adecuado de tu proyecto.
- Agregar dependencias de Firebase: Modifica los archivos de configuración de tu proyecto para incluir las dependencias de Firebase.
Implementación en Código
Registro de Usuarios
Para registrar un nuevo usuario con correo electrónico y contraseña, utiliza el método createUserWithEmailAndPassword
de Firebase Authentication.
Ejemplo en JavaScript
// Importa Firebase import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; // Inicializa Firebase Authentication const auth = getAuth(); // Función para registrar un nuevo usuario function registerUser(email, password) { createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Registro exitoso const user = userCredential.user; console.log("Usuario registrado:", user); }) .catch((error) => { // Manejo de errores const errorCode = error.code; const errorMessage = error.message; console.error("Error en el registro:", errorCode, errorMessage); }); } // Llamada a la función con un correo y contraseña de ejemplo registerUser("[email protected]", "contraseñaSegura123");
Inicio de Sesión de Usuarios
Para iniciar sesión con un usuario registrado, utiliza el método signInWithEmailAndPassword
.
Ejemplo en JavaScript
// Importa Firebase import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; // Inicializa Firebase Authentication const auth = getAuth(); // Función para iniciar sesión function loginUser(email, password) { signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Inicio de sesión exitoso const user = userCredential.user; console.log("Usuario autenticado:", user); }) .catch((error) => { // Manejo de errores const errorCode = error.code; const errorMessage = error.message; console.error("Error en el inicio de sesión:", errorCode, errorMessage); }); } // Llamada a la función con un correo y contraseña de ejemplo loginUser("[email protected]", "contraseñaSegura123");
Cierre de Sesión
Para cerrar la sesión del usuario actual, utiliza el método signOut
.
Ejemplo en JavaScript
// Importa Firebase import { getAuth, signOut } from "firebase/auth"; // Inicializa Firebase Authentication const auth = getAuth(); // Función para cerrar sesión function logoutUser() { signOut(auth) .then(() => { // Cierre de sesión exitoso console.log("Usuario ha cerrado sesión"); }) .catch((error) => { // Manejo de errores console.error("Error en el cierre de sesión:", error); }); } // Llamada a la función para cerrar sesión logoutUser();
Ejercicios Prácticos
Ejercicio 1: Registro de Usuario
Objetivo: Implementar una función que registre un nuevo usuario utilizando correo electrónico y contraseña.
Instrucciones:
- Crea una interfaz simple con un formulario que tenga campos para el correo electrónico y la contraseña.
- Implementa la función
registerUser
que registre al usuario cuando se envíe el formulario.
Solución:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Registro de Usuario</title> </head> <body> <h1>Registro de Usuario</h1> <form id="registerForm"> <input type="email" id="email" placeholder="Correo Electrónico" required> <input type="password" id="password" placeholder="Contraseña" required> <button type="submit">Registrar</button> </form> <script type="module"> import { getAuth, createUserWithEmailAndPassword } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-auth.js"; import { initializeApp } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-app.js"; // Configuración de Firebase const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_MESSAGING_SENDER_ID", appId: "YOUR_APP_ID" }; // Inicializa Firebase const app = initializeApp(firebaseConfig); const auth = getAuth(app); // Función para registrar un nuevo usuario function registerUser(email, password) { createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { const user = userCredential.user; console.log("Usuario registrado:", user); }) .catch((error) => { console.error("Error en el registro:", error.code, error.message); }); } // Manejo del formulario de registro document.getElementById('registerForm').addEventListener('submit', (e) => { e.preventDefault(); const email = document.getElementById('email').value; const password = document.getElementById('password').value; registerUser(email, password); }); </script> </body> </html>
Ejercicio 2: Inicio de Sesión
Objetivo: Implementar una función que permita a los usuarios iniciar sesión utilizando correo electrónico y contraseña.
Instrucciones:
- Crea una interfaz simple con un formulario que tenga campos para el correo electrónico y la contraseña.
- Implementa la función
loginUser
que inicie sesión cuando se envíe el formulario.
Solución:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Inicio de Sesión</title> </head> <body> <h1>Inicio de Sesión</h1> <form id="loginForm"> <input type="email" id="email" placeholder="Correo Electrónico" required> <input type="password" id="password" placeholder="Contraseña" required> <button type="submit">Iniciar Sesión</button> </form> <script type="module"> import { getAuth, signInWithEmailAndPassword } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-auth.js"; import { initializeApp } from "https://www.gstatic.com/firebasejs/9.6.1/firebase-app.js"; // Configuración de Firebase const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_MESSAGING_SENDER_ID", appId: "YOUR_APP_ID" }; // Inicializa Firebase const app = initializeApp(firebaseConfig); const auth = getAuth(app); // Función para iniciar sesión function loginUser(email, password) { signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { const user = userCredential.user; console.log("Usuario autenticado:", user); }) .catch((error) => { console.error("Error en el inicio de sesión:", error.code, error.message); }); } // Manejo del formulario de inicio de sesión document.getElementById('loginForm').addEventListener('submit', (e) => { e.preventDefault(); const email = document.getElementById('email').value; const password = document.getElementById('password').value; loginUser(email, password); }); </script> </body> </html>
Conclusión
En esta sección, hemos aprendido cómo implementar la autenticación por correo electrónico y contraseña utilizando Firebase Authentication. Hemos cubierto los pasos para habilitar esta funcionalidad en la consola de Firebase, así como los métodos necesarios para registrar, iniciar sesión y cerrar sesión de usuarios en nuestra aplicación. Además, hemos proporcionado ejemplos prácticos y ejercicios para reforzar los conceptos aprendidos.
En el siguiente módulo, exploraremos la autenticación de redes sociales, que permitirá a los usuarios iniciar sesión utilizando sus cuentas de Google, Facebook, y otros proveedores de identidad.
Curso de Firebase
Módulo 1: Introducción a Firebase
Módulo 2: Autenticación de Firebase
- Introducción a la autenticación de Firebase
- Autenticación por correo electrónico y contraseña
- Autenticación de redes sociales
- Gestión de usuarios
Módulo 3: Base de datos en tiempo real de Firebase
- Introducción a la base de datos en tiempo real
- Lectura y escritura de datos
- Estructura de datos y reglas de seguridad
- Capacidades sin conexión
Módulo 4: Cloud Firestore
- Introducción a Cloud Firestore
- Modelo de datos de Firestore
- Operaciones CRUD
- Consultas avanzadas
- Reglas de seguridad
Módulo 5: Almacenamiento de Firebase
- Introducción al almacenamiento de Firebase
- Subida de archivos
- Descarga de archivos
- Metadatos de archivos y seguridad
Módulo 6: Mensajería en la nube de Firebase
- Introducción a la mensajería en la nube
- Envío de notificaciones
- Manejo de notificaciones
- Características avanzadas de mensajería
Módulo 7: Análisis de Firebase
Módulo 8: Funciones de Firebase
- Introducción a las funciones de Firebase
- Escritura de funciones
- Despliegue de funciones
- Activación de funciones
Módulo 9: Monitoreo de rendimiento de Firebase
- Introducción al monitoreo de rendimiento
- Configuración del monitoreo de rendimiento
- Análisis de datos de rendimiento
Módulo 10: Laboratorio de pruebas de Firebase
- Introducción al laboratorio de pruebas de Firebase
- Ejecución de pruebas
- Análisis de resultados de pruebas