Cuando queremos usar el usuario autenticado actual, debemos escuchar el estado de autenticación de firebase:
firebase.auth().onAuthStateChanged((user) => { ... });¿Hay algunos casos en los que usar firebase.auth().currentUser api sea la elección correcta (y no la práctica de cama)?
firebase.auth().currentUser se usa principalmente para obtener las properties del usuario que ha iniciado sesión actualmente.
Estas propiedades incluyen displayName email emailVerified phoneNumber uid y muchas más .
Sospecho que la forma correcta de usar ambos métodos está en un componente de alto nivel en su proyecto. ¿Qué significa esto?
Bueno, supongamos que tenemos una aplicación web que usa Firebase Auth.
Cuando el usuario visita esta aplicación web, me gustaría verificar si ha iniciado sesión. Entonces, onAuthStateChanged para registrar un authentication event handler que responda a los cambios en el authentication state . Esto debe agregarse en uno de los componentes de nivel superior de mi aplicación web.
Si el user es null (esto significa que ningún usuario ha iniciado sesión, redirigiré al usuario a mi página de inicio de sesión). Pero si el user ! = null , entonces me gustaría almacenar información sobre este usuario en un nivel de toda la aplicación para luego usar la información de este usuario en toda mi aplicación web en los componentes que desee. Y así podemos pasar el estado redux a algunas de las propiedades del user props . Mi código será:
//
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/firebase.User const uid = user.uid; // ... SET REDUX STATE } else { // User is signed out // ... window.location.href = '/login' } }); Teóricamente hablando, podría usar firebase.auth().currentUser en toda su aplicación web. Sin embargo, generalmente se considera una mala práctica porque activará un intermediate state cuando no es necesario. Si simplemente establece las propiedades del usuario en el estado redux desde el principio, no aparecerá ningún estado intermedio una vez que desee usar la información del usuario dentro de su aplicación web.