Firebase sendEmailVerification在createUser之前

时间:2017-09-10 21:44:00

标签: swift firebase firebase-authentication

在将用户添加到数据库之前,Firebase中是否有办法验证用户的电子邮件? 我的最终目标是创建一个SignUp表单,用户首先输入电子邮件地址,然后按“验证电子邮件地址”按钮。此时,将发送验证电子邮件,用户将从内部链接以确认电子邮件地址。现在,当回到应用程序时,用户将有一个继续按钮,如果未验证电子邮件,则用户将无法注册,如果相反,用户将能够注册。

我该如何解决这个问题? 到目前为止,所有文档都说我必须创建用户,然后我可以使用currentUser.sendEmailVerification,但很明显,我不想在验证之前创建用户。 我还考虑过使用完成块,但我不知道如何解决这个问题,因为在用户按下继续按钮之前必须推迟注册。

由于

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")
            })

        })

1 个答案:

答案 0 :(得分:3)

您无法使用Firebase Auth执行此操作。需要首先创建用户,因为该记录是"容器"这为电子邮件验证提供了关于哪些用户在回复电子邮件时实际已经过验证的适当背景信息。

在您的应用中,您可以使用emailVerified属性检查特定用户帐户是否已经过验证。这样,您就可以为最终用户提供与验证相关的不同体验。