2016-07-07 3 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

Нет проблем. Если это помогло вам, пожалуйста, воздержитесь/отметьте как правильный ответ :) –

Смежные вопросы