【问题标题】:Send an email verfication email to a new Firebase User in Swift在 Swift 中向新的 Firebase 用户发送电子邮件验证电子邮件
【发布时间】:2018-08-14 12:22:03
【问题描述】:

我已将我的应用设置为使用电子邮件地址和密码成功登录或创建 Firebase 帐户。 我现在要做的是检查用户是否验证了他们的电子邮件,如果没有,则向他们发送 Firebase 允许我们编写的验证电子邮件。

@IBAction func createAccountTapped(_ sender: Any) {

    if let email = emailTextfield.text, let password = passwordTextfield.text {

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

            if let firebaseError = error {

                print(firebaseError.localizedDescription)

                return

            }

            self.presentTabBar()

        })

    }

}

@IBAction func loginTapped(_ sender: Any) {

    if let email = emailTextfield.text, let password = passwordTextfield.text {

        Auth.auth().signIn(withEmail: email, password: password, completion: {(user, error) in

            if let firebaseError = error {

                print(firebaseError.localizedDescription)

                return

            }

            self.presentTabBar()

        })

    }

}

这是我的“创建帐户”和“登录”功能。

我的问题是我不知道如何实现这个功能,以及在哪里调用这些函数。

你能告诉我发送这封电子邮件的功能是什么,以及检查电子邮件是否经过验证的功能是什么?

【问题讨论】:

    标签: swift firebase-authentication


    【解决方案1】:

    您可以在创建帐户后发送验证邮件:

    (不要忘记创建一个额外的按钮/操作,以便用户可以再次要求验证邮件)

    private var authUser : User? {
        return Auth.auth().currentUser
    }
    
    public func sendVerificationMail() {
        if self.authUser != nil && !self.authUser!.isEmailVerified {
            self.authUser!.sendEmailVerification(completion: { (error) in
                // Notify the user that the mail has sent or couldn't because of an error.
            })
        }
        else {
            // Either the user is not available, or the user is already verified.
        }
    }
    

    结合你的代码:

    @IBAction func createAccountTapped(_ sender: Any) {
        if let email = emailTextfield.text, let password = passwordTextfield.text {
    
            Auth.auth().createUser(withEmail: email, password: password, completion: { user, error in
    
                if let firebaseError = error {
                    print(firebaseError.localizedDescription)
                    return
                }
    
                sendVerificationMail()
    
    
                self.presentTabBar()
            })
        }
    }
    

    检查用户是否已验证:

    @IBAction func loginTapped(_ sender: Any) {
    
    
        if let email = emailTextfield.text, let password = passwordTextfield.text {
    
            Auth.auth().signIn(withEmail: email, password: password, completion: {(user, error) in
                if let firebaseError = error {
                    print(firebaseError.localizedDescription)
                    return
                }
    
                if user != nil && !user!.isEmailVerified {
                // User is available, but their email is not verified.
                // Let the user know by an alert, preferably with an option to re-send the verification mail.
                }
                self.presentTabBar()
            })
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 2014-09-18
      • 2017-09-09
      • 2018-12-25
      • 2019-11-25
      • 2020-07-19
      • 1970-01-01
      • 2019-06-24
      • 2018-11-21
      相关资源
      最近更新 更多