0

Ich habe Firebase Auth in meinem Web-App implementiert, wie im Tutorial vorgeschlagen:Firebase Auth funktioniert nicht in Safari

function initApp() { 
    firebase.auth().onAuthStateChanged(function(user) { 
     if (user) { 
      // User is signed in. 
      } else { 
       // No user is signed in. 
       console.log("no user signed in"); 
      } 
    }); 
} 

window.onload = function() { 
    initApp(); 
}; 

Das funktioniert perfekt in Chrome. Der Benutzerauthentifizierungsstatus bleibt für mehrere Webseiten bestehen. Ich kann mich auf einer Seite anmelden und das Benutzerprofil ist weiterhin auf der nächsten Seite verfügbar.

Dies funktioniert jedoch nicht in Safari, das Benutzer-Firebase-Benutzerobjekt verschwindet einfach. Ich habe versucht, verschiedene Problemumgehungen, indem Sie das Benutzerobjekt in Cookies oder lokalen Speicher nach dem Einloggen gespeichert, aber keiner von ihnen funktioniert. Wie kann ich das in Safari (und anderen Browsern) so gut wie in Chrome machen?

+1

Sie testen dieses zufällig in Safari incognito? Wenn ja, beachten Sie, dass die Größe "localStorage" in Safari inkognito auf "0" steht. –

+0

Leider ist es nicht privaten Modus – c0rv0s

+1

Der Auth-Zustand ist in localStorage gespeichert. Wenn Sie Safari incognito nicht verwenden, können Sie erklären, was localStorage verursacht, um es zu löschen? Beim Laden der Seite prüft Firebase Auth, ob der Benutzer noch gültig ist, bevor er den Listener onAuthStateChanged auslöst. Wenn der Benutzer deaktiviert oder gelöscht wird, wird er aus dem Speicher gelöscht. Wenn dies nicht der Fall ist, löscht etwas anderes Ihre localStorage. – bojeil

Antwort

1

Ich fand es heraus. Als ich die Site von Finder geladen habe, hat der lokale Speicher den Authentifizierungsstatus nicht gespeichert (ich weiß nicht warum), aber als ich die Site hochgeladen und von ihrer URL aus darauf zugegriffen habe, hat alles wie erwartet funktioniert.