我使用firebase作为项目的后端来验证用户。每个用户注册后,我想发送一封验证电子邮件,以确认他们是一个真实的人和帐户持有人。我正在使用
AuthViewController
从
FirebaseUI
并附上了一个听众。下面是发送电子邮件验证的代码。我注意到当用户第一次注册而没有发送任何验证电子邮件时,google帐户返回为已经验证。
应用程序委托内部
func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?) {
// handle user and error as necessary
if let error = error{
print("Error: \(error.localizedDescription)")
}
if let user = user{
print("Signed in user: \(user.uid)")
if user.isEmailVerified{
print("The email has been verified")
showHomeScreen()
}
else{
print("User is not verified")
user.sendEmailVerification(completion: {(err) in
if (err != nil){
print("Error in verifying email: \(err?.localizedDescription)")
}
})
}
}
}
视图控制器内部
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
handle = Auth.auth().addStateDidChangeListener { (auth, user) in
// ...
print("State changed")
if Auth.auth().currentUser != nil && Auth.auth().currentUser!.isEmailVerified == true{
print("User SignedIn")
print("Email Verified")
showHomeScreen()
}
else if user?.isEmailVerified == false{
print("Email is not verified")
// Auth.auth().currentUser?.sendEmailVerification { (error) in
// // Notify the user that the mail has sent or couldn't because of an error.
// // showLoginScreen()
// if let error = error{
// print("Error sending Email Verification: \(error.localizedDescription)")
// }
// print("Email not verified")
// }
}
else{
print("User SignedOut")
}
}
}