2017-09-10 1 views
1

Gibt es in Firebase eine Möglichkeit, die E-Mail-Adresse eines Benutzers zu überprüfen, bevor der Benutzer zur Datenbank hinzugefügt wird? Mein ultimatives Ziel ist es, ein Anmeldeformular zu erstellen, in dem der Benutzer zuerst die E-Mail-Adresse eingibt und dann auf die Schaltfläche "E-Mail-Adresse bestätigen" klickt. An diesem Punkt wird die Bestätigungs-E-Mail gesendet und der Benutzer folgt dem Link von innen, um die E-Mail-Adresse zu bestätigen. Wenn Sie jetzt zur App zurückkehren, hat der Benutzer eine Schaltfläche zum Fortfahren. Wenn die E-Mail nicht verifiziert ist, kann der Benutzer sich nicht registrieren, wenn sich der Benutzer im Gegensatz dazu registrieren kann.Firebase sendEmailVerification vor createUser

Wie gehe ich vor? Bis jetzt sagt die gesamte Dokumentation, dass ich createUser erstellen muss, dann kann ich currentUser.sendEmailVerification verwenden, aber natürlich möchte ich vor der Verifizierung keinen Benutzer erstellen. Ich dachte auch über die Verwendung eines Completion-Block, aber ich bin mir nicht sicher, wie das funktioniert, weil die Registrierung verschoben werden müsste, bis der Benutzer die Schaltfläche "Weiter" drückt.

Dank

Auth.auth().createUser(withEmail: email, password: password, completion: {(user: User?, error) in 

      if error != nil { 
       print(error!) 
       return 
      } 

      guard let uid = user?.uid else { 
       return 
      } 


      let ref = Database.database().reference(fromURL: "https://project/") 
      let values = [ 
       "email": email, 
       "userName": userName, 
       "name": name, 
       "birthDate": birthDate, 
       "phoneNumber": phoneNumber] 

      let userReference = ref.child("users").child(uid) 
      userReference.updateChildValues(values, withCompletionBlock: {(err, ref) in 
       if err != nil{ 
        print(err!) 
        return 
       } 

       print("Successfully added user to database") 
      }) 

      let usedUserReference = ref.child("users-Used").child(userName) 
      usedUserReference.setValue(uid, withCompletionBlock: {(err, ref) in 
       if err != nil{ 
        print(err!) 
        return 
       } 

       print("Successfully added user to cannot be used-again list") 
      }) 

     }) 
+0

Wenn Sie nur Maßnahmen ergreifen möchten, bis ein Benutzer verifiziert wurde, führen Sie diese Aktion aus, wenn sich der Benutzer anmeldet und die Eigenschaft emailVerified des Benutzers wahr ist. Sie können die Anforderung, den Benutzer zu erstellen und die E-Mail-Verifizierungsanfrage zu senden, nicht vermeiden. –

Antwort

1

Sie können dies mit Firebase Auth nicht. Der Benutzer muss zuerst erstellt werden, da dieser Datensatz der "Container" ist, der der E-Mail-Verifizierung den richtigen Kontext gibt, über den Benutzer bei der Antwort auf die E-Mail tatsächlich verifiziert wurde.

In Ihrer App können Sie mithilfe der emailVerified-Eigenschaft überprüfen, ob ein bestimmter Benutzeraccount verifiziert wurde. Auf diese Weise können Sie dem Endnutzer unterschiedliche Erfahrungen hinsichtlich seiner Verifizierung geben.

+0

Verstanden, danke. Wie gehen Sie also vor, um die Verifizierung einzuleiten? so dass ich danach emailVerified verwenden kann. All dies, ohne den Benutzer der Datenbank hinzuzufügen, wenn nicht verifiziert –

+0

Bitte lesen Sie meine Antwort noch einmal. Das Benutzerobjekt muss hinzugefügt werden, um die Überprüfung durchzuführen. Es gibt keine Problemumgehung. –

+0

Gibt es also eine Möglichkeit, die E-Mails der Benutzer zu überprüfen, bevor Sie sie zu meiner Datenbank hinzufügen? Oder fügen Sie sie hinzu und wenn es sich herausstellt, dass sie nicht überprüft wurden, um sie zu löschen, oder wie Sie den Thread pausieren, während sie auf den Link klicken und wenn nicht abbrechen? –

Verwandte Themen