我坚持使用firebase进行电子邮件验证.我四处寻找指导但没有帮助.在用户验证他的电子邮件后,我的代码仍然打印出用户尚未验证.我还在尝试习惯firebase的语法.这是我的代码:
if FIRAuth.auth()?.currentUser!.emailVerified == true{ FIRAuth.auth()?.signInWithEmail(email.text!,password: passsword.text!,completion: { user,error in if error != nil{ print("Email/password is wrong or user does not exist") }else{ print("Successful login.") } }) }else{ print("Please verify your email.") }
这是我注册部分的代码:
let eduEmail = email.text let endInEdu = eduEmail?.hasSuffix("my.utsa.edu") if endInEdu == true { FIRAuth.auth()?.createuserWithEmail(email.text!,completion: { user,error in if error != nil{ let alert = UIAlertController(title: "User exists.",message: "Please use another email or sign in.",preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "Ok",style: UIAlertActionStyle.Default,handler: nil)) self.presentViewController(alert,animated: true,completion: nil) print("Email has been used,try a different one") }else{ FIRAuth.auth()?.currentUser!.sendEmailVerificationWithCompletion({ (error) in }) let alert = UIAlertController(title: "Account Created",message: "Please verify your email by confirming the sent link.",completion: nil) print("This is a college email and user is created") } }) }else{ print("This is not a my.utsa.edu email") }
解决方法
您在签名之前检查了用户电子邮件是否已经过验证.
这对我有用.
FIRAuth.auth()?.signInWithEmail(txtUsername.text!,password: txtPassword.text!) { (user,error) in if let user = FIRAuth.auth()?.currentUser { if !user.emailVerified{ let alertVC = UIAlertController(title: "Error",message: "Sorry. Your email address has not yet been verified. Do you want us to send another verification email to \(self.txtUsername.text).",preferredStyle: .Alert) let alertActionOkay = UIAlertAction(title: "Okay",style: .Default) { (_) in user.sendEmailVerificationWithCompletion(nil) } let alertActionCancel = UIAlertAction(title: "Cancel",style: .Default,handler: nil) alertVC.addAction(alertActionOkay) alertVC.addAction(alertActionCancel) self.presentViewController(alertVC,completion: nil) } else { print ("Email verified. Signing in...") } } }