2017-02-01 5 views
1

Я новичок в Swift и Firebase. Я создал несколько ярлыков, которые я хочу отобразить в контроллере представления учетной записи, например, пароль должен иметь длину не менее 6 символов, электронная почта недействительна и так далее. Я понятия не имею, как создать инструкции if, else для этого, или если Firebase уже имеет что-то встроенное. Опять же, это только для Swift, я знаю, что есть информация для Android, но я этого не понимаю.Firebase Авторизация

Это мой код.

@IBAction func nextTapped(_ sender: Any) { 

    guard let email = emailField.text, !email.isEmpty else { 
     return 
    } 

    guard let pwd = confirmPass.text, !pwd.isEmpty, confirmPass.text == PassField.text else { 
     passMatch.isHidden = false 
     return 
    } 

    FIRAuth.auth()?.createUser(withEmail: email, password: pwd, completion: { (user, error) in 
     if error != nil { 
      self.emailTaken.isHidden = false 
      self.emailTaken.text = FirebaseAuthException().getReason() 
     } else { 
      if let user = user { 
       let userData = ["provider": user.providerID] 
       self.completeSignIn(id: user.uid, userData: userData) 
      } 
     } 
    }) 
} 
+0

Я избавился от self.emailTaken.text = FirebaseAuthException(). GetReason(), потому что он продолжал давать мне ошибки – Willstarr

ответ

1

Я на самом деле понял много ошибок для этого. Если кто-то заинтересован и когда-либо сталкивается с той же проблемой, просто следуйте этому. Я уверен, что есть лучший способ с моментальными снимками, но это делает проблему самой простой.

@IBAction func nextTapped(_ sender: Any) { 


    guard let email = emailField.text, !email.isEmpty else { 
     return 
    } 

    guard let pwd = confirmPass.text, !pwd.isEmpty, confirmPass.text == PassField.text else { 
     passMatch.isHidden = false 
     return 
    } 

    passMatch.isHidden = true 

    FIRAuth.auth()?.createUser(withEmail: email, password: pwd, completion: { (user, error) in 
     if error != nil { 
      if let errorCode = FIRAuthErrorCode(rawValue: (error?._code)!) { 
       switch errorCode { 
       case .errorCodeNetworkError: 
        print("A network error occurred") 
       case .errorCodeInvalidEmail: 
        self.emailTaken.isHidden = false 
       case .errorCodeEmailAlreadyInUse: 
        self.emailTaken.isHidden = false 
       case .errorCodeWeakPassword: 
        self.passRule.isHidden = false 
       default: 
        print("Create User Error: \(error)") 
        } 
      } 
     } else { 
      if let user = user { 
       let userData = ["provider": user.providerID] 
       self.completeSignIn(id: user.uid, userData: userData) 
      } 
     } 
    }) 
} 
2

Firebase обрабатывает почти все для вас, вот список ошибок, которые они предоставляют, и вы можете использовать: https://firebase.google.com/docs/auth/ios/errors#method_specific_error_codes

Или вы можете просто показать NSLocalizedDescription как здесь:

FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in 
     if let error = error as? NSError{ 
      if let errorMessage = error.userInfo["NSLocalizedDescription"] as? String { 
       //Show Alert with message provided in 'errorMessage' 
      } else { 
       //Show General Alert 
      } 
     } else if let user = user { 
      //Logged in 
     } else { 
      // Unknow State 
    } 
Смежные вопросы