Xcode中firebase的登录身份验证问题

时间:2021-02-23 16:32:22

标签: ios swift xcode firebase-authentication

我尝试进行 firebase 身份验证。我已经安装了所有必要的 pod 并制作了所有需要的方法。当我点击“登录”时,即使我输入了错误的电子邮件和密码,我也会收到错误消息(例如密码错误),并且我的视图立即更改为我的目标视图(下一个 ViewController)。我不知道为什么会这样,因为我做了 if 声明。除非我输入正确的电子邮件和密码,否则我想拥有我的登录页面。

 @IBAction func loginTapped(_ sender: UIButton) {
         if let email = emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines), let password =
 passwordTextField.text?.trimmingCharacters(in:
 .whitespacesAndNewlines) {
             
            Auth.auth().signIn(withEmail: email, password: password) { (authResult, error) in
                if let e = error {
                     // Can't sign in
                     self.errorLabel.text = error!.localizedDescription
                     self.errorLabel.alpha = 1
                 } else {
                     self.performSegue(withIdentifier: "loginToHome", sender: self)
                }
             }
         }
     }

1 个答案:

答案 0 :(得分:1)

您可以先尝试检查是否存在错误。如果是,将显示错误消息。如果没有错误,将执行登录成功segue。

@IBAction func loginTapped(_ sender: UIButton) {
    if let email = emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines), let password = passwordTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) {
        Auth.auth().signIn(withEmail: email, password: password) { (authResult, error) in
          if error != nil { // there's an error - show error label
               self.errorLabel.text = error!.localizedDescription
               self.errorLabel.alpha = 1
          } else { //no error - perform segue
           // no error - perform segue
          self.performSegue(withIdentifier: "loginToHome", sender: self) } } } }

编辑:您也可以在检查存在错误后添加 return - 后面的代码将不会被执行:

@IBAction func loginTapped(_ sender: UIButton) {
    if let email = emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines), let password = passwordTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) {
        Auth.auth().signIn(withEmail: email, password: password) { (authResult, error) in
          if error != nil { // there's an error - show error label
                self.errorLabel.text = error!.localizedDescription
                self.errorLabel.alpha = 1
                return // activities that follow will not be performed
          } else { //no error - perform segue
                self.performSegue(withIdentifier: "loginToHome", sender: self) } } } }