Aquí está mi función de inicio de sesión, funciona, inicia sesión a través de la cuenta de Google, pero al actualizar no permanece conectado. ¿Qué estoy haciendo mal? lo siento, no tengo idea de cómo formatear el código para que se muestre correctamente aquí.
const provider = new GoogleAuthProvider(); const login = () => {setPersistence(auth, browserSessionPersistence) .then(()=> { signInWithPopup(auth, provider) .then((result) => { const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential?.accessToken; // The signed-in user info. const user = result.user; //console.log({ credentials, token, user }); }) .then(() => { setSignIn(true); }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.email; // The AuthCredential type that was used. const credential = GoogleAuthProvider.credentialFromError(error); //console.log({ errorCode, errorMessage, email, credential }); });})
};
Firebase restaura automáticamente las credenciales de usuario cuando reinicia la aplicación, pero su código solo responde al inicio de sesión explícito ( signInWithPopup ).
Para recuperar la restauración automática (y otros cambios en el estado de autenticación), debe usar un detector de estado de autenticación como se muestra en el primer ejemplo de código en la documentación sobre cómo obtener el usuario actual :
firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });Desde v9, el código ha cambiado.
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; // ... } else { // User is signed out // ... } });