Firebase E-Mail-Überprüfung funktioniert nicht ordnungsgemäß

8

WAS ICH HABE

Ich verwende die Firebase-Authentifizierung in meiner App, in der sich die Nutzer mithilfe von E-Mail & amp; Passwort Wenn die Nutzer ihre E-Mails nicht bestätigt haben, deaktiviere ich einige Funktionen, bis sie ihre E-Mails verifiziert haben.

Ich habe auch eine Schaltfläche, um die Bestätigungsmail explizit auszulösen, die nur sendEmailVerification() aufruft. Es funktioniert perfekt und Verifikation Mail wird immer gesendet.

DAS PROBLEM

Der Benutzer erhält die Bestätigungsmails, aber wenn er es überprüft und zur App zurückkehrt, ist isEmailVerified() immer falsch. Daher erlaubt meine App dem Benutzer immer noch nicht alle Funktionen zu nutzen, obwohl er seine E-Mail-Adresse verifiziert hat.

Wenn sie sich jedoch abmelden und erneut anmelden, gibt isEmailVerified() sofort true zurück. Aber ist es nicht gut, den Benutzer auszuloggen und sich wieder einzuloggen.

Ist das ein Fehler in Firebase? Oder mache ich etwas falsch?

    
Aritra Roy 07.12.2016, 17:57
quelle

1 Antwort

4

Hey ich weiß, dass das ein ziemlich alter Thread ist, aber was hat das Problem für mich gelöst FIRAuth.auth()?.currentUser.reload(completion: { (error) in ... })

Für jeden, der mit diesem Problem konfrontiert ist. Und ich verwende die neueste Firebase-Version 10.0.1

AKTUALISIEREN

Firebase hat die Namen ihrer Funktionen geändert, seit ich meine Lösung veröffentlicht habe.

Bitte beachten Sie, dass alle Änderungen an den aktuellen Benutzerzuständen durch Hinzufügen eines stateDidChangeListener beobachtet werden können. Auth.auth ()? CurrentUser wird nicht sofort aktualisiert, also habe ich den aktuellen Benutzer in einer globalen Variable gespeichert, die ich selbst erstellt und gepflegt habe.

%Vor%

Immer wenn Sie Auth.auth()?.currentUser.reload() aufrufen, wird ein aktualisiertes und sofort verwendbares Benutzerobjekt durch den stateDidChangeListener geleitet.

Sie können dann nach aktualisierten Daten suchen (z. B. per E-Mail verifiziert)

    
Woody Jean-louis 05.08.2017 16:13
quelle