Componente Auth con Google y Firebase en Angular 17
Clase 11 de 21 • Curso de Firebase con Angular 20
Resumen
La autenticación con Google en Angular 17 se implementa de forma clara y escalable con un componente Auth bien estructurado. Aquí verás cómo el template, el controller y el service (AuthService) se integran con Firebase, cómo manejar errores y redirecciones, y cómo acelerar el desarrollo con agentes de IA y prompts.
¿Qué hace el componente Auth en Angular 17?
El objetivo es loguearse con Google usando Firebase y redirigir al chat cuando la sesión esté activa. El componente fue generado con Angular CLI y se completará con HTML, CSS y TypeScript.
¿Qué incluye el template con Google y estructuras nuevas?
- Tarjeta de login con botón que muestra el logo SVG de Google.
- Click en el SVG dispara el método de login.
- Estado de “autenticando” para deshabilitar el botón mientras ocurre el proceso.
- Manejo de error visible si falla la autenticación.
- Uso de estructuras de Angular 17 (reemplazo de directivas) con sintaxis cercana a JavaScript.
- Si ya estás autenticado: redirige directamente al chat.
¿Qué gestiona el controller del componente?
- Método principal: iniciar sesión con Google con try/catch/finally.
- Limpia errores previos y activa “autenticando” al iniciar.
- Llama a AuthService para el login con Google (inicialmente simulado).
- Si hay usuario, navega a Chat; si no, muestra error.
- Si el popup se cierra, captura y muestra el error.
- En finally, desactiva “autenticando” para terminar el loading.
¿Cómo se integra Firebase con AuthService y observable?
La clase del servicio se renombra a AuthService para evitar choques de nombres. Una vez implementado, se descomentan dos líneas clave: la del login en el service y la suscripción a un observable que indica si el usuario está autenticado. Con eso, la app sabrá el estado de sesión y navegará al chat incluso estando en la ruta de Auth si ya hay login activo.
¿Cómo es el flujo del login con Google?
- Click en “Continuar con Google”.
- Estado “autenticando” en true: botón deshabilitado y loading.
- Llamada al AuthService para Firebase Google.
- Si el usuario existe: router navega a Chat.
- Si no existe o se cierra el popup: muestra error.
- finally: “autenticando” vuelve a false.
// Ejemplo ilustrativo del controller (simplificado)
async iniciarSesionConGoogle(): Promise<void> {
this.error = null;
this.autenticando = true;
try {
const user = await this.authService.loginWithGoogle();
if (user) {
this.router.navigate(['/chat']);
} else {
this.error = 'No se puede obtener información del usuario.';
}
} catch (e) {
this.error = 'Ocurrió un error durante el login.';
} finally {
this.autenticando = false;
}
}
¿Cómo probar el login y acelerar con IA?
Para levantar la aplicación se usa npm start, uno de los scripts definidos (en el fondo hace ng serve
). Se abre en localhost:4200, el puerto genérico de Angular. Verás la pantalla de login y, al hacer clic en “Continuar con Google”, por ahora simula el login y va al chat. Cuando se implemente AuthService con Firebase, se abrirá un popup de Google, podrás loguearte con tu mail y la sesión quedará guardada; luego se navegará a Chat para manipular datos.
¿Cómo apoyarte con agentes de IA y prompts?
- Abrir View Chat y usar un agente; si no hay, indicar que se maneje el agente.
- Con Copilot, seleccionar un modelo y pedir el componente.
- Arrastrar la carpeta del componente y pegar el prompt preparado (hay un TXT en la carpeta prompts).
- Revisar el resultado: nunca será idéntico, pero acelera mucho y resuelve CSS complejos.
- Iterar con instrucciones concretas y ejemplos de tu código hasta quedar conforme.
¿Qué habilidades y keywords se trabajan?
- Autenticación con Firebase y Google en Angular 17.
- Uso de estructuras del template en lugar de directivas.
- Diseño de controller con try/catch/finally y manejo de errores.
- Patrón de AuthService y observable para estado de sesión.
- Navegación con router y redirección a Chat.
- Flujo de loading, deshabilitado de botones y popup de Google.
- Ejecución con npm start,
ng serve
y puerto 4200. - Productividad con agentes de IA, prompts y Copilot.
¿Te gustaría comentar cómo estructurarías tu AuthService o qué prompt te funcionó mejor para generar el componente?