2016-07-20 8 views
0

I Firebase SDK (Web) für die Benutzeranmeldung in.Firebase SDK (Web) erstellen Passwort-basierte Konto

Hier ist ein Link

Authenticate with Firebase using Password-Based Accounts

ich für erstellten Benutzer diesen Code verwendet Konto und ich kann erfolgreich Benutzer erstellen.

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) { 
    // Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}); 

Aber meine Frage ist, wie man entscheidet, wenn Erfolg schaffen?

Wenn erstellt scheitern kann der Code Fehler fangen, aber wenn Erfolg wie kann ich fangen?

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) { 
    // Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}.catch(success){ 
    // Handle Success here 
    // I want to catch success like this 
}); 

Antwort

1

Die createUserWithEmailAndPassword() gibt eine so genannte Versprechen. Ein Versprechen kann erfolgreich sein und fehlschlagen und hat separate Klauseln für jedes Versprechen. Sie können Erfolg mit der then() Klausel Griff:

firebase.auth().createUserWithEmailAndPassword(email, password).then(success){ 
    // Handle Success here 
}).catch(function(error) { 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}; 

Der Grund, warum Sie nicht then() in der Dokumentation sehen, ist, weil die oben einige wichtige Strömungen vermißt für, wenn sich der Benutzer in

Zum Beispiel. Was passiert, wenn Sie die Seite/App neu laden? Firebase speichert die Sitzung des Benutzers automatisch im lokalen Speicher, aber der Code ist sich dessen nicht bewusst. Ihre App wird sich wahrscheinlich erneut anmelden müssen, was zu einer nicht so guten Erfahrung führt.

Mit Firebase-Authentifizierung ist es besser, monitor the authentication state:

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

Dieser Rückruf nicht automatisch aufgerufen wird, wenn der Benutzer in oder out unterzeichnet ist. Unabhängig davon, ob Sie das Konto erstellt haben, haben sie die Seite neu geladen oder ihr kurzlebiges Token wurde aktualisiert - der Code im ersten Block wird ausgeführt. Ähnlich: ob die Sitzung des Benutzers abgelaufen ist, sie sich abgemeldet hat oder aus irgendeinem anderen Grund abgemeldet wird - der Code im zweiten Block wird ausgeführt.

Auf diese Weise haben Sie nur einen einzigen Platz für die Bearbeitung des Falls, in dem der Benutzer an- oder abgemeldet wird.

Aber seit createUserWithEmailAndPassword() kann in allen Arten von spektakulären Möglichkeiten fehlschlagen, werden Sie immer noch diese Fehler dort explizit behandeln wollen.

So ist der komplette idiomatische Code für die Handhabung der createUserWithEmailAndPassword() und Monitor-Sign-in-Zustand ist:

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) { 
    var errorCode = error.code; 
    var errorMessage = error.message; 
}; 
firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 
+0

Dank Ihrer Hilfe –

+0

Hallo ich versuche dann hinzufügen(), aber es scheint nicht funktioniert –