Mabel Exalta Peña Garcia
alguien me puede ayudar a entender la diferencia entre import { firebase } from “@firebase/app”; y import * as firebase from “@firebase/app”;
gracias
Abraham Sanchez
Añade login con Facebook a tu app Angular usando Firebase de forma segura y rápida. Aquí verás cómo implementar signInWithPopup con FacebookAuthProvider, habilitar el provider en Firebase y configurar App ID y App Secret en Facebook Developers, con manejo de errores y verificación del usuario.
¿Cómo integrar login con Facebook en Firebase y Angular?
Implementa el flujo en tu servicio de autenticación y conéctalo al componente de login. La clave es usar AngularFireAuth con signInWithPopup y el FacebookAuthProvider.
¿Qué código va en el servicio de autenticación?
facebookLogin.signInWithPopup con new firebase.auth.FacebookAuthProvider().// autorización.service.ts import * as firebase from 'firebase/app'; import 'firebase/auth'; export class AutorizacionService { constructor(private angularFireAuth: AngularFireAuth) {} public facebookLogin() { return this.angularFireAuth.auth .signInWithPopup(new firebase.auth.FacebookAuthProvider()) .then(result => { alert('Usuario logueado con Facebook'); console.log(result); // Explora datos útiles del usuario. // TODO: redirigir al usuario cuando el login sea correcto. }) .catch(error => { console.log(error); // Manejo de errores. }); } }
¿Cómo lo llamo desde el componente y la vista?
facebookLogin en el componente que invoque al servicio.// login.component.ts export class LoginComponent { constructor(private autorizacionService: AutorizacionService) {} facebookLogin() { this.autorizacionService.facebookLogin(); } }
<!-- login.component.html --> <button class="btn btn-warning btn-block" (click)="facebookLogin()"> Login con Facebook </button>
¿Qué configuración en Firebase y Facebook es obligatoria?
Sin habilitar el provider, verás el error "The given sign in provider is disabled". Activa Facebook en Firebase y configura la app en Facebook Developers.
¿Cómo habilitar Facebook en Firebase Authentication?
¿Cómo crear la app y obtener App ID y App Secret en Facebook?
¿Qué buenas prácticas y debugging se aplican?
Al finalizar, el login abrirá una ventana de popup y autenticará al usuario con Facebook. Considera estos puntos para un flujo sólido.
¿Cómo manejar estados y errores del flujo?
¿Cómo verificar el usuario autenticado?
Ideas clave del flujo:
signInWithPopup y FacebookAuthProvider.¿Tienes dudas sobre algún paso o quieres replicarlo con Google, Twitter o GitHub usando el mismo patrón? Cuéntame en comentarios qué provider quieres integrar y en qué parte necesitas ayuda.
Mabel Exalta Peña Garcia
alguien me puede ayudar a entender la diferencia entre import { firebase } from “@firebase/app”; y import * as firebase from “@firebase/app”;
gracias
Abraham Sanchez
Jesús Olivares Olivares Suarez
Este video debería ir despues del de logout… Aqui usan :
**import {Router} from “@angular/router”; **
Y eso lo explican es en el video 65
Francisco Manuel Velásquez Escobar
Andres Felipe Jerez Giraldo
Como extra, recordar que si has registrado un correo ya anteriormente en firebase y ese mismo es el que usa tu cuenta de fb va a saltar error por que el usuario ya existe con el email anterior.
Joshua Michael Rodriguez
Al momento de dar clic en el botón Create new Facebook App de la pagina:
Me aparece el siguiente mensaje:
Este contenido ya no está disponible
El contenido solicitado no se puede mostrar en este momento. Es posible que no esté disponible, que el enlace seleccionado haya caducado o que no tengas permiso para ver esta página.
¿Alguien sabe a que se podría deber esto?
Diego Forero
Team PlatziA mi me funciona, ya creaste primero tu developer account?
Joshua Michael Rodriguez
Aun no, quizás se deba a eso.
Gracias, lo intentaré.
Jhon Carmona
Presente un error “FacebookAuthProvider’ of undefined” lo solucione cambiando la importación.
import { firebase } from “@firebase/app”;
Yohan Estiven Arias Vasquez
Excelente tu aporte friend! Muchas gracias
Usuario anónimo
UserBuena recomendación.
Alejandro Valenzuela
Buenas compañeros, les dejo el link para aquellos que quieran probar la autenticacion pero con gtiHub…es mucho mas fácil que hacerlo con facebook.
Saludos.
Carlos Uriel de Jesus Sánchez González
esta muy bien el logueo con redes sociales
Jesus David Mendez Coronell
Para los que se le dificulta hacerlo con facebook, solo cambien el servicio por otro como el de google es gratis
Yonny Rivera Espinoza
Una pregunta como puedo hacer una autenticacion de dos factores en Angular 6
Miguel Fernando Urquijo Gómez
en facebook developers esta la opción de poder registrar la aplicación para iniciar sesión con facebook!
Miguel Fernando Urquijo Gómez
recuerden ver primero el **video 65 **que explican la parte de logout y luego si ver este!
Luis Felipe Cardona Florez
Hay algo que nunca he etendido, que significa auntenticarse en una plataforma a traves de otra ? que es eso de entrar por ejemplo a spotify, a un vlog, a shopify o cualquier otra plataforma a tra vez de otra plataforma como facebook, instagram, tweeter ?
Diego Forero
Team PlatziUsas el sistema de autenticación por ejemplo de redes sociales, con esto no tienes que recordar dos contraseñas si no solo una, las redes sociales preguntan por permisos y generan un token el cual es almacenado y con este se valida que puedas acceder al servicio o plataforma.
Luis Felipe Cardona Florez
Que es un token ?
Normalmente cuando haces un import de una sola clase exportada en un archivo javascript es asi:
class MiClase { //codigo de mi clase } export default MiClase
Luego para usarla:
Import MiClase from 'MiClase.js'
Pero ahora suponemos que tenemos un archivo js con multiples export ejemplo:
export const DEFAULT_ENV = "production"; export const getEnv = env => { /*code*/ }; export const setEnv = env => { /*code*/ };
Para poder usar alguno de estos elementos se aplica como una destructuracion al archivo javascript al hacer import ejemplo:
Import { DEFAULT_ENV, getEnv } from "./utils.js";
De esta forma solo puede usar solo las funciones y constantes que solo me interese de ese archivo javascript en especifico.
Pero si necesito usar todo lo que esta en ese archivo javascript pues entonces lo uso de la siguiente manera:
import * as Utils from "./utils.js";
Esto significa que todos los elementos que contiene el archivo utils.js seran almacenados en un objeto que estoy llamano Utils. El * significa que llamas todos los elementos, pero tambien puedes usar destructuración. Usando esta forma ahora puedes usar los diferentes elementos de la siguiente forma:
const currentEnv = Utils.DEFAULT_ENV; Utils.setEnv(currentEnv);
En resumen:
La diferencia entre import { firebase } from “@firebase/app”; y
import * as firebase from “@firebase/app”; es que uno esta llamando un elemento especifico del paquete @firebase/app y el segundo llama a todos los elementos contenidos en el paquete @firebase/app para usarlos como un objeto llamado firebase
Espero haberme explicado bien. Un saludo.
Es correcto amigo, se debe importar el router y agregar el constructor para poder redirigir a /lugares luego del login.
import {Injectable} from "@angular/core"; import {AngularFireAuth} from "angularfire2/auth/auth"; import * as firebase from 'firebase/app'; import {Router} from "@angular/router"; @Injectable() export class AutorizacionService { constructor(private angularFireAuth: AngularFireAuth, private router: Router){ this.isLogged(); } public facebookLogin(){ this.angularFireAuth.auth.signInWithPopup(new firebase.auth.FacebookAuthProvider()) .then((resutl) => { console.log(resutl); alert('usuario loggeado con Facebook'); this.router.navigate(['lugares']); }) .catch((error) =>{ console.log(error); }); } public login = (email, password) => { this.angularFireAuth.auth.signInWithEmailAndPassword(email, password) .then((response) => { alert('Usuario Logueado con éxito'); console.log(response); this.router.navigate(['lugares']); }) .catch((error) => { alert('Un error ha ocurrido'); console.log(error); }) } public registro = (email, password) => { this.angularFireAuth.auth.createUserWithEmailAndPassword(email, password) .then((response) => { alert('Usuario Registrado con éxito'); console.log(response); this.router.navigate(['lugares']); }) .catch((error) => { alert('Un error ha ocurrido'); console.log(error); }) } public isLogged(){ return this.angularFireAuth.authState; } }