2016-07-07 13 views
0

私は自分のアプリでfirebase authを設定しています。私が実行しているエラーは、ログイン情報が間違ったログイン情報でタップされるたびに、認証が正しいときに実行されるブロックが呼び出されることです。だから、間違って3回ログインしようとすると、最終的に正しくログインすると(4回目の試行で)、セグが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関数を間違って使用していますか?正しい資格情報が入力されているかどうかを確認する良い方法はありますか?

答えて

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

問題ありません。これが正しい答えとしてアップマーク/マークしてください:) –

関連する問題