Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

471
Views
La mejor manera de persistir el inicio de sesión de firebase usando expo go

Estoy tratando de hacer una aplicación en React Native usando Expo Go. He logrado que Google inicie sesión y todo está bien. Desafortunadamente, el inicio de sesión del usuario NO persiste entre los reinicios de la aplicación. Al principio, pensé que era un problema de almacenamiento asíncrono, pero puedo guardar elementos en el almacenamiento sin problemas entre relanzamientos.

¿Qué datos necesitaría guardar manualmente para poder volver a iniciar la sesión del usuario cada vez que se inicie la aplicación?

Preferiría conservar los datos manualmente, ya que todos los métodos que se supone que funcionan, no funcionan para mí. Métodos que he probado:

  • Llamar setPersistence(getAuth(), browserLocalPersistence) me da un error, vea esta publicación para ver el error exacto que estoy recibiendo.
  • Usar onAuthStateChanged tampoco funciona para mí, de hecho, esa es la principal forma en que sé cuándo iniciar sesión. El objeto de usuario siempre es nulo, y nunca cambia de nulo hasta que el usuario inicia sesión nuevamente (lo que sucede en cada inicio de aplicación ).
     useEffect(() => getAuth().onAuthStateChanged(value => { if (value) { console.log("User is signed in"); } else { console.log("User is signed out"); // navigation.navigate("login") } }), [])

(Este código siempre imprimirá que el usuario ha cerrado la sesión en el reinicio de la aplicación).
En este punto, creo que sería más fácil si pudiera guardar las credenciales del usuario yo mismo y luego iniciar sesión en silencio al iniciar la aplicación. Estoy teniendo dificultades para encontrar el código para hacer esto.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Ok, entonces me di cuenta de que para preservar el estado de inicio de sesión, en realidad tienes que hacer un proceso especial si usas expo. Debe inicializar su propia autenticación, pasando Async Storage, así

 import { initializeApp } from "firebase/app" import { initializeAuth } from "firebase/auth" import { getReactNativePersistence } from "firebase/auth/react-native" import AsyncStorage from "@react-native-async-storage/async-storage" const defaultApp = initializeApp(config); initializeAuth(defaultApp, { persistence: getReactNativePersistence(AsyncStorage) });
about 4 years ago · Juan Pablo Isaza Report

0

Debe usar SecureStore para almacenar los datos en el dispositivo. Algo así como LocalStorage en la web, SharedPreference en Android y NSUserDefaults en iOS.

Ejemplo:

 // save your thing async function save(key, value) { await SecureStore.setItemAsync(key, value); } // get your thing async function getValueFor(key) { let result = await SecureStore.getItemAsync(key); if (result) { alert("🔐 Here's your value 🔐 \n" + result); } else { alert('No values stored under that key.'); } }

Lea más aquí: https://docs.expo.dev/versions/latest/sdk/securestore/

la idea es guardar el JWT de Firebase en SecureStore, de modo que cuando se inicie la aplicación, verifique este valor, luego use ese JWT en la tienda segura cuando llame a su API

about 4 years ago · Juan Pablo Isaza Report

0

La respuesta de @Bernard Allotey es correcta. Aquí hay un ejemplo con la versión compatible de firebase 9

 import firebase from 'firebase/compat/app'; import 'firebase/compat/auth'; import 'firebase/compat/firestore'; import 'firebase/compat/functions'; import AsyncStorage from '@react-native-async-storage/async-storage'; import {initializeAuth} from 'firebase/auth'; import {getReactNativePersistence} from 'firebase/auth/react-native'; import firebaseConfig from './firebaseConfig'; const fireApp = firebase.initializeApp(firebaseConfig); firebase.firestore(); firebase.functions(); // firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL); initializeAuth(fireApp, { persistence: getReactNativePersistence(AsyncStorage), }); export default firebase;
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!