it-swarm.com.de

Wie erkenne ich, ob ein Benutzer bereits in Firebase angemeldet ist?

Ich verwende die Firebase-Node-API in meinen Javascript-Dateien für die Google-Anmeldung.

firebase.initializeApp(config);
let provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider);

Dies funktioniert problemlos und der Nutzer kann sich mit seinen Google-Anmeldeinformationen anmelden. Wenn der Benutzer die Seite erneut besucht, wird das Popup erneut geöffnet. Da er sich jedoch bereits angemeldet hat, wird das Popup geschlossen, ohne dass der Benutzer eingreifen muss. Gibt es eine Möglichkeit zu überprüfen, ob bereits ein Benutzer angemeldet ist, bevor das Popup aufgerufen wird?

69
Jophin Joseph

https://firebase.google.com/docs/auth/web/manage-users

Sie müssen einen Beobachter für die Änderung des Authentifizierungsstatus hinzufügen.

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});
75
bojeil

Sie können auch prüfen, ob ein currentUser vorhanden ist

var user = firebase.auth().currentUser;

if (user) {
  // User is signed in.
} else {
  // No user is signed in.
}
60
Passos

In diesem Szenario muss die Funktion onAuthStateChanged () nicht verwendet werden.

Sie können leicht erkennen, ob der Benutzer angemeldet ist oder nicht, indem Sie Folgendes ausführen:

var user = firebase.auth().currentUser;

Für diejenigen, die mit dem Problem "Returning Null" konfrontiert sind, liegt es nur daran, dass Sie nicht auf den Abschluss des Firebase-Aufrufs warten.

Angenommen, Sie führen die Anmeldeaktion auf Seite A aus und rufen dann Seite B auf. Auf Seite B können Sie den folgenden JS-Code aufrufen, um das erwartete Verhalten zu testen:

  var config = {
    apiKey: "....",
    authDomain: "...",
    databaseURL: "...",
    projectId: "..",
    storageBucket: "..",
    messagingSenderId: ".."
  };
  firebase.initializeApp(config);

    $( document ).ready(function() {
        console.log( "testing.." );
        var user = firebase.auth().currentUser;
        console.log(user);
    });

Wenn der Benutzer angemeldet ist, enthält "var user" die erwartete JSON-Nutzlast. Wenn nicht, ist sie nur "null".

Und das ist alles was Sie brauchen.

Grüße

12

Eine andere Möglichkeit besteht darin, dasselbe zu verwenden, was Firebase verwendet.

Wenn sich beispielsweise ein Benutzer anmeldet, speichert firebase die folgenden Details im lokalen Speicher. Wenn der Benutzer zur Seite zurückkehrt, verwendet firebase dieselbe Methode, um festzustellen, ob der Benutzer automatisch angemeldet werden soll.

enter image description here

ATTN: Da dies von firebase weder aufgelistet noch empfohlen wird. Sie können diese Methode als inoffizielle Methode bezeichnen. Dies bedeutet, dass diese Methode möglicherweise später nicht funktioniert, wenn die Firebase ihre innere Funktionsweise ändert. Oder kurz gesagt. Benutzung auf eigene Gefahr! :)

2
ravish.hacker