imagina pictogramaImagina Formación

Cómo Integrar una App de Angular en Firebase

Escrito por Equipo de Imagina• Actualizado el 29/11/2024• Duración: 15 min
Antes de la integración debemos de saber que es Angular, es un framework para la construcción de aplicaciones web dinámicas que fue desarrollado por el equipo de Angular.
A través de su estructura basada en componentes y su capacidad para manejar grandes proyectos, Angular ha ganado una reputación sólida en el desarrollo web moderno. Este framework permite a los desarrolladores crear aplicaciones altamente escalables y mantenibles con facilidad. Además, Angular proporciona una integración simple con otras tecnología, facilitando el proceso de desarrollo.

¿Qué es Firebase y cuáles son sus beneficios?

El Firebase es una plataforma de desarrollo de aplicaciones completamente gestionada que nos permite construir aplicaciones web al proporcionar varios servicios como autenticación, Firestore, almacenamiento y hosting. Firebase se destaca por su facilidad de uso y rápida integración, permitiendo una implementación sin fricciones. Con su capacidad de proporcionar sincronización en tiempo real, optimiza la experiencia de usuario y maneja actualizaciones de datos de manera eficiente.

Sinergia entre Angular y Firebase

La combinación de Angular y Firebase es especialmente poderosa debido a la naturaleza reactiva de ambas plataformas. Angular, con su enfoque en aplicaciones basadas en componentes y Firebase, con sus servicios backend de alta calidad, se complementan perfectamente. AngularFire, la biblioteca oficial para integrar Firebase con Angular, facilita la comunicación entre ambos, ofreciendo servicios como observables y operadores reactivos que permiten manejos complejos de estados y eventos en la aplicación.

Configuración Inicial

Requisitos previos

Para empezar con la integración de una aplicación Angular en Firebase, es importante tener ciertos requisitos previos cumplidos. En primer lugar, asegúrate de tener Node.JS y NPM instalados en tu máquina, ya que estos son esenciales para la gestión de paquetes y ejecución de comandos de Angular y Firebase. También necesitarás una cuenta de Firebase para poder utilizar sus servicios.

Instalación de Angular

Para instalar Angular, primero, abre tu terminal y usa el siguiente comando para instalar Angular CLI:
 npm install -g @angular/cli 
Una vez que la instalación esté completa, puedes crear un nuevo proyecto de Angular con el siguiente comando:
 ng new nombre-proyecto 
Este comando despliega la estructura base del proyecto en la carpeta especificada, permitiéndote comenzar a trabajar inmediatamente. A continuación, navega a la carpeta del proyecto:
 cd nombre-proyecto 
Aquí es donde iniciaremos la configuración de Firebase.

Creación del proyecto en Firebase

Para crear un proyecto en Firebase, dirígete a la consola de Firebase e inicia sesión con tu cuenta. Haz clic en 'Añadir proyecto' y sigue las instrucciones para nombrar tu proyecto y configurarlo según tus necesidades. Habilita Google Analytics si es necesario para tu aplicación. Una vez creado, selecciona 'Añadir app' y elige
Web
. Sigue las instrucciones para registrar tu app y obtendrás un código de configuración que utilizaremos más adelante.

Configuración de Firebase en el Proyecto Angular

Instalación y configuración de Firebase en Angular

Para instalar Firebase en tu proyecto Angular, utiliza los siguientes comandos en tu terminal:
npm install firebase @angular/fire
Esta instalación proporciona todo lo necesario para que Firebase funcione con Angular. A continuación, abre tu archivo
src/app/app.module.ts
y añade las siguientes importaciones y configuraciones:
import { AngularFireModule } from '@angular/fire'; 
import { environment } from '../environments/environment'; 

@NgModule({ 
  declarations: [ 
    AppComponent 
  ], 
  imports: [ 
    BrowserModule, 
    AngularFireModule.initializeApp(environment.firebaseConfig) 
  ], 
  providers: [], 
  bootstrap: [AppComponent] 
}) 
export class AppModule { } 
De esta manera, hemos inicializado Firebase en nuestra aplicación Angular.

Configuración del archivo environment.ts

El siguiente paso es configurar tu archivo
environment.ts
con la información de configuración de Firebase que obtuviste anteriormente en la consola de Firebase. Abre el archivo
src/environments/environment.ts
y añade:
export const environment = { 
  production: false, 
  firebaseConfig: { 
    apiKey: "TU_API_KEY", 
    authDomain: "TU_AUTH_DOMAIN", 
    projectId: "TU_PROJECT_ID", 
    storageBucket: "TU_STORAGE_BUCKET", 
    messagingSenderId: "TU_MESSAGING_SENDER_ID", 
    appId: "TU_APP_ID" 
  } 
}; 
Sustituye los valores con los que copiaste desde la consola de Firebase.

Integración del módulo AngularFire

Para poder utilizar los servicios de Firebase, necesitamos integrar el módulo
AngularFire
. Ve al archivo
src/app/app.module.ts
y asegúrate de haber importado
AngularFireModule
y de inicializar la configuración de Firebase. Anteriormente, ya lo incluimos en la sección de imports del módulo principal. Ahora, añadimos los servicios específicos que vamos a utilizar, como
AngularFireAuthModule
y
AngularFirestoreModule
:
import { AngularFireAuthModule } from '@angular/fire/auth';
import { AngularFirestoreModule } from '@angular/fire/firestore';

@NgModule({ 
  imports: [ 
    AngularFireModule.initializeApp(environment.firebaseConfig), 
    AngularFireAuthModule, 
    AngularFirestoreModule 
  ] 
}) 
export class AppModule { } 
Con esta configuración, estamos listos para utilizar la autenticación y la base de datos Firestore en nuestra aplicación Angular.

Descubre la formación a tu medida

Rellena el formulario para obtener más información sobre los cursos.

Usaremos los datos personales recopilados a través de este formulario en línea para informarte de las últimas novedades sobre nuestros cursos. Para obtener más información, consulta nuestra política de privacidad.

Implementación de Autenticación

Configuración del servicio de autenticación en Firebase

Para configurar la autenticación en Firebase, primero debes iniciar sesión en Firebase y crear un nuevo proyecto. Luego, dirígete a la sección de 'Autenticación' en el panel de Firebase y haz clic en 'Empezar'. Activa los métodos de autenticación que planeas usar, como email y contraseña, Google, Facebook, etc.
// Asegúrate de tener Firebase configurado en tu proyecto de Angular
import { AngularFireAuth } from '@angular/fire/auth';
import { auth } from 'firebase/app';

constructor(private afAuth: AngularFireAuth) {} 

loginGoogle() { 
  this.afAuth.signInWithPopup(new auth.GoogleAuthProvider()); 
}
Una vez configurados, podemos pasar a integrar estos servicios en nuestra aplicación de Angular.

Integración de la autenticación en Angular

Integrar la autenticación de Firebase en Angular es un proceso sencillo gracias a AngularFire. Primero, asegúrate de tener AngularFire instalado en tu proyecto:
npm install @angular/fire firebase
Luego, importa y configúralo en tu aplicación:
import { AngularFireModule } from '@angular/fire';
import { AngularFireAuthModule } from '@angular/fire/auth';
import { environment } from '../environments/environment';

@NgModule({ 
  declarations: [ AppComponent ],
  imports: [ 
    BrowserModule, 
    AngularFireModule.initializeApp(environment.firebase),
    AngularFireAuthModule 
  ], 
  providers: [], 
  bootstrap: [AppComponent] 
}) 
export class AppModule { } 
Finalmente, crea un servicio de autenticación en tu aplicación para manejar el login y el logout:
import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';

@Injectable({ providedIn: 'root' }) 
export class AuthService { 
  constructor(private afAuth: AngularFireAuth) {} 

  login(email: string, password: string) { 
    return this.afAuth.signInWithEmailAndPassword(email, password); 
  }
  
  logout() { 
    return this.afAuth.signOut(); 
  } 
}

Gestión de usuarios y sesiones

Para gestionar usuarios y sesiones, debemos manejar tokens y estado de autenticación. Utiliza los métodos de AngularFireAuth para suscribirte a los cambios en el estado de autenticación:
import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import { Router } from '@angular/router';

@Injectable({ providedIn: 'root' }) 
export class AuthService { 
  userData: any;

  constructor(private afAuth: AngularFireAuth, private router: Router) { 
    this.afAuth.authState.subscribe(user => { 
      if (user) { 
        this.userData = user; 
        localStorage.setItem('user', JSON.stringify(this.userData)); 
      } else { 
        localStorage.setItem('user', null); 
      } 
    }); 
  }

  isLoggedIn(): boolean { 
    const user = JSON.parse(localStorage.getItem('user')); 
    return user !== null; 
  }

  logout() { 
    return this.afAuth.signOut().then(() => { 
      localStorage.removeItem('user'); 
      this.router.navigate(['login']); 
    }); 
  } 
}
Este servicio te permitirá supervisar el estado de la sesión del usuario y redireccionar adecuadamente según el estado de autenticación.

Implementación de Firestore

Configuración y estructura de la base de datos

Para configurar Firestore, primero navega a Firebase Console, selecciona tu proyecto y abre la sección Firestore Database. Haz clic en 'Crear base de datos' y selecciona el modo que más te convenga, ya sea modo de prueba o modo de producción.
{
  "usuario": { "nombre": "William", "email": "william@example.com" },
  "tareas": { 
    "1": { "titulo": "Angular y Firebase", "descripcion": "Aprender a integrar ambas tecnologías" },
    "2": { "titulo": "Practicar TypeScript", "descripcion": "Realizar ejercicios" } 
  } 
}
Organiza y optimiza tu base de datos según las necesidades de tu aplicación.

Operaciones CRUD en Angular con Firestore

Para realizar operaciones CRUD (crear, leer, actualizar, eliminar) en Firestore desde una app Angular, primero debes importar los módulos necesarios:
import { AngularFirestore } from '@angular/fire/firestore';
import { Injectable } from '@angular/core';

@Injectable({ providedIn: 'root' }) 
export class FirestoreService { 
  constructor(private firestore: AngularFirestore) {}

  // Crear documento
  createRecord(data: any, path: string) { 
    return this.firestore.collection(path).add(data); 
  }

  // Leer documentos
  readRecords(path: string) { 
    return this.firestore.collection(path).snapshotChanges(); 
  }

  // Actualizar documento
  updateRecord(id: string, data: any, path: string) { 
    return this.firestore.doc(`${path}/${id}`).update(data); 
  }

  // Eliminar documento
  deleteRecord(id: string, path: string) { 
    return this.firestore.doc(`${path}/${id}`).delete(); 
  } 
}
Estos métodos te permiten interactuar con Firestore realizando operaciones CRUD de manera eficiente.

Sincronización en tiempo real con AngularFire

Una de las grandes ventajas de usar Firestore y AngularFire es la capacidad de sincronización en tiempo real. Para implementar esta funcionalidad, usa el método
valueChanges()
.
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';

@Injectable({ providedIn: 'root' }) 
export class RealTimeService { 
  constructor(private firestore: AngularFirestore) {} 

  getRealTimeUpdates(path: string) { 
    return this.firestore.collection(path).valueChanges(); 
  } 
}
Utilízalo en tu componente Angular para actualizar automáticamente los datos en tu interfaz de usuario:
import { Component, OnInit } from '@angular/core';
import { RealTimeService } from './real-time.service';

@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) 
export class AppComponent implements OnInit { 
  records: any[];

  constructor(private realTimeService: RealTimeService) {} 

  ngOnInit() { 
    this.realTimeService.getRealTimeUpdates('tareas').subscribe(data => { 
      this.records = data; 
    }); 
  } 
}
De esta manera, todos los datos se sincronizarán en tiempo real, proporcionando una experiencia de usuario fluida y actualizada.

Conviertete en un experto de Angular

Integrar una aplicación Angular con Firebase te ofrece una poderosa combinación de frontend y backend en tiempo real, facilitando el desarrollo de aplicaciones web altamente dinámicas y escalables. Si has disfrutado de este tutorial y deseas profundizar tus conocimientos en Angular y Firebase, te recomendamos nuestro curso de Angular para empresas
Aprenderás desde los conceptos básicos hasta técnicas avanzadas que te permitirán llevar tus habilidades al siguiente nivel.
Además, te invitamos a conocer los mejores cursos para empresas y descubrir la formación que más se adapte a las necesidades de tu organización.

Descubre la formación a tu medida

Rellena el formulario para obtener más información sobre los cursos.

Usaremos los datos personales recopilados a través de este formulario en línea para informarte de las últimas novedades sobre nuestros cursos. Para obtener más información, consulta nuestra política de privacidad.