2016-07-07 16 views
0

Ich bin eine Firebase Auth in meiner App einrichten. Der Fehler, auf den ich stoße, ist, dass für jedes Mal, wenn auf die Anmeldung mit falschen Anmeldedaten zugegriffen wird, der Block aufgerufen wird, der ausgeführt wird, wenn die Authentifizierung korrekt ist. Also sagen wir, ich versuche mich dreimal falsch anzumelden, wenn ich mich endlich richtig eingeloggt habe (beim vierten Versuch), wird meine Sequenz viermal ausgeführt.Firebase falsche Anmeldung 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) 


        } 
       } 
      } 
     } 
    } 
} 

Ich benutze die Funktion sighInWithEmail nicht korrekt? Gibt es eine bessere Möglichkeit zu überprüfen, ob die richtigen Anmeldeinformationen eingegeben wurden?

Antwort

2

Versuchen Sie folgendes:

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) 


       } 
} 

Es ist dein gleichen Code, aber ich habe die addAuthStateDidChangeListener entfernt. Sie brauchen es nicht, wenn Sie sich anmelden.

+0

Ich habe es gerade geschrieben. Es sollte funktionieren. –

+0

Vielen Dank. –

+0

Kein Problem. Wenn das Ihnen geholfen hat, bitte upvote/als richtige Antwort markieren :) –