Firebase错误登录swift

时间:2016-07-07 21:57:58

标签: ios swift firebase firebase-authentication

我正在我的应用中设置firebase身份验证。我遇到的错误是,每次使用不正确的登录凭据轻触登录时,都会调用auth正确时运行的块。所以假设我尝试登录不正确,3次,当我最终正确登录时(第四次尝试),我的segue执行了4次。

@IBAction func signInTapped(sender: UIButton) {

    if let email = self.usernameTextField.text {

        if let password = self.passwordTextField.text {

            FIRAuth.auth()?.signInWithEmail(email, password: password) { (user, error) in

                FIRAuth.auth()?.addAuthStateDidChangeListener { auth, user in

                    if user != nil {

                        self.performSegueWithIdentifier("loggedInSegue", sender: self)
                        NSUserDefaults.standardUserDefaults().setValue(true, forKey: "loggedIn")
                        NSUserDefaults.standardUserDefaults().setValue(email, forKey: "email")
                        NSUserDefaults.standardUserDefaults().setValue(password, forKey: "password")

                    } else {

                        self.incorrectLoginAnimation(self.passwordTextField)
                        self.incorrectLoginAnimation(self.usernameTextField)


                    }
                }
            }
        }
    }
}

我是否错误地使用了sighInWithEmail函数?有没有更好的方法来验证是否输入了正确的凭证?

1 个答案:

答案 0 :(得分:3)

试试这个:

FIRAuth.auth()?.signInWithEmail(email, password: password) { (user, error) in


    if user != nil {

                    self.performSegueWithIdentifier("loggedInSegue", sender: self)
                    NSUserDefaults.standardUserDefaults().setValue(true, forKey: "loggedIn")
                    NSUserDefaults.standardUserDefaults().setValue(email, forKey: "email")
                    NSUserDefaults.standardUserDefaults().setValue(password, forKey: "password")

                } else {

                    self.incorrectLoginAnimation(self.passwordTextField)
                    self.incorrectLoginAnimation(self.usernameTextField)


                }
}

这是相同的代码,但我删除了addAuthStateDidChangeListener。登录时,您不需要它。