Estoy trabajando en un PWA de reacción usando los servicios de Firebase. Por PWA me refiero a que utiliza trabajadores de servicios, tiene habilitada la persistencia de datos fuera de línea de Firestore y se supone que debe iniciar la sesión del usuario siempre que los datos de la sesión estén almacenados en el navegador.
El problema que tengo es que después de autenticar a un usuario, quiero que el usuario pueda apagar el wifi y los datos móviles, y poder abrir la aplicación nuevamente, y que la aplicación trate al usuario como si estuviera autenticado. Todo esto funciona bien en los navegadores de escritorio Chrome y Firefox. (Por alguna razón no en Safari)
Sin embargo, cuando utilizo los últimos navegadores móviles Chrome y Firefox, los trabajadores del servicio funcionan bien, pero después de apagar el wifi y los datos móviles, la aplicación no trata al usuario como si estuviera conectado y aparece un mensaje de error en la consola que dice "error de autenticación interno". Desafortunadamente no da mucha más información que eso.
Para verificar si hay un usuario, estoy usando el oyente onAuthStateChanged en mi App.tsx de esta manera:
const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { setCurrentUser(user.email); } else { setCurrentUser(null); } });Puedes probar por ti mismo aquí:
correo electrónico: usuario@test.com pw: testpassword123
https://ravenstaging--review-dev-brown-4wcbt6-7jxhpu9l.web.app/
Cualquier ayuda/información será muy apreciada. ¡Gracias!
Este error se produce porque si se llama a getAuth() o se define initializeAuth con browserPopupRedirectResolver, se producirá un error en el dispositivo móvil y en Safari cuando no esté conectado. Puede leer cómo solucionarlo aquí: https://github.com/firebase/firebase-js-sdk/issues/5529