2016-07-07 3 views
0

내 앱에서 firebase 인증을 설정하고 있습니다. 내가 잘못하고있는 오류는 잘못된 로그인 자격 증명으로 로그인 할 때마다 인증이 올바를 때 실행되는 블록이 호출된다는 것입니다. 그래서 정확하게 (네 번째 시도에서) 정확하게 로그인 할 때 3 회 잘못 로그인하려고합니다. 내 segue가 4 번 수행됩니다.Firebase 부정확 로그인 지연

@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 기능을 잘못 사용하고 있습니까? 올바른 자격 증명이 입력되었는지 확인하는 더 좋은 방법이 있습니까? 그것은 당신 같은 코드의

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을 제거했습니다

답변

2

이보십시오. 로그인 할 때 필요하지 않습니다.

+0

방금 ​​작성했습니다. 그것은 작동해야합니다. –

+0

고맙습니다. –

+0

문제는 없습니다. 이것은 당신이 올바른 답변으로 upvote/mark하시기 바랍니다 :) –