2017-06-03 10 views
1

私は新しいユーザーを認証しようとすると、次のコードを使用してFirebaseAuthに自分のメールアドレスとパスワードを格納している:しかし、私は、ユーザーが電子メールを入力したときであるということである、問題に実行しているよSwiftのFirebaseAuthでERROR_EMAIL_ALREADY_IN_USEを捕まえるには?

Auth.auth().createUser(withEmail: email, password: password) { (user, error) in 
      if user == nil || error != nil { 
       let alert = UIAlertController(title: "Please Try Again", 
               message: "Invalid email or password", 
               preferredStyle: .alert) 
       alert.addAction(UIAlertAction(title: "OK", style: .default) {_ in }) 
       self.present(alert, animated: true) 
      } 
      else { 
       self.performSegue(withIdentifier: "nextpage", sender: self) 
      } 
     } 

をすでに使用中の場合、FirebaseAuthはエラーを返しません。代わりに、現在の電子メールを単に上書きします。私は、FirebaseAuthUserCollisionExceptionの一部としてERROR_EMAIL_ALREADY_IN_USEというエラーがスローされる可能性があることをドキュメントで読みましたが、これをどのように捕まえることができますか?ありがとう!

+0

あなたはデータベースに登録しているユーザーの総数で確認できます。 –

答えて

0

置きコールバックハンドラでこのコード:

if let error = error { 
    switch FIRAuthErrorCode(rawValue: error!._code) { 
    case .emailAlreadyInUse: 
     print("Email already in use") 
    default: 
     print("Other error") 
    } 
} 

は今、あなたはif user == nil || error != nilブロックであれば削除することができます。

エラーコードのリストについては、https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Enums/FIRAuthErrorCodeも参照してください。

+0

これは正しい方向の一歩と思われます。しかし、私は現在、 "エラーにはメンバーコードがありません"というエラーメッセージが表示されています。私のコンパイラもerrorCodeEmailAlreadyInUseエラーを認識していません。私はこれが構文のいくつかの更新のためかもしれないと思っています。何か案は? –

+0

@ M.Yingええと、エニュームケースの名前が変更され、メンバーは_codeと呼ばれます。アップデートを参照してください。 – paper1111

関連する問題