在通过Firebase(Swift)创建用户之前,如何检查电子邮件是否已被使用以及电子邮件格式是否错误

时间:2019-01-04 09:28:17

标签: swift firebase email error-handling firebase-authentication

是否可以在致电Auth.auth().createUser(withEmail: createEmail...

之前检查电子邮件地址是否已被使用

我有多个注册视图控制器,用户必须按确切的顺序输入电子邮件地址,创建用户名,然后输入其名称和创建密码。但是,除了名称和密码(一个在一起)之外,这些都是单独的视图控制器。

我希望用户知道输入的电子邮件地址格式是否正确,或者是否已被使用。我弄清楚该怎么做的唯一方法是在用户浏览所有视图控制器之后,然后单击“注册”按钮以检查所有错误。

这是我为最终视图控制器所拥有的代码,该代码在所有步骤完成后都会创建用户(按下注册按钮)

 Auth.auth().createUser(withEmail: createEmail as! String, password: password as! String ) { (user, error) in

        // stop activity indicator
        self.nextButton.setTitle("Sign Up", for: .normal)
        self.activityIndicator.stopAnimating()
        if error == nil && user != nil {
            print("User Created!")
            // If user is created go to Welcome Page
            self.performSegue(withIdentifier: "goToWelcomeVC", sender: self)
            } else {
        // If there is an error creating an account
            print("error creating User: \(error!.localizedDescription)")
            print(error!._code)
            self.handleError(error!)
            return

这是我正在为电子邮件视图控制器使用的代码。 (按下继续按钮)**不必介意AuthErrorCode的大部分内容,我正试图找到一种方法来调用它并将其合并到错误检查中。.看来对我来说不是很好。

// TODO check email
   let invalidEmail = AuthErrorCode.invalidEmail
   let emailTaken = AuthErrorCode.emailAlreadyInUse

    }

    if (emailTextField.text?.isEmpty)! {
        print("textField is empty")
        let alert = UIAlertController(title: "Oops!", message: "Please enter an email address.", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: " Try Again", style: UIAlertAction.Style.default, handler: nil))
        self.present(alert, animated: true, completion: nil)
    } else {
        self.performSegue(withIdentifier: "goToCreateUsernameVC", sender: self)
    }

}

1 个答案:

答案 0 :(得分:1)

您需要签出fetchSignInMethodsForEmail。它提供了一个API,用于查找所提供电子邮件的所有相关登录方法。如果电子邮件未注册,您将返回一个空数组。