2016-07-07 74 views
0

我在我的應用程序中設置了一個Firebase身份驗證。我遇到的錯誤是,每次登錄時都使用不正確的登錄憑證進行輕叩,就會調用auth正確時運行的塊。因此,假設我嘗試登錄不正確,3次,當我最後登錄正確(第四次嘗試)時,我的賽格執行了4次。Firebase不正確登錄swift

@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函數時出現錯誤?有沒有更好的方法來驗證是否輸入了正確的憑證?

回答

2

試試這個:

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。當您登錄時,您不需要它。

+0

我只是在寫它。它應該工作。 –

+0

非常感謝。 –

+0

沒問題。如果這有助於你請upvote /標記爲正確答案:) –