2016-06-26 13 views
13

AndroidでFirebase、機能でFirebase Authを使用します。AndroidのFirebase:Firebaseの認証に失敗した理由を確認するには?

私はFirebaseAuth.signInWithEmailAndPasswordを試します。失敗した場合は、「なぜsignInプロセスが失敗したのですか」を知りたいのですが?

signInWithEmailAndPasswordのメソッドはaddOnFailureListener APIです。 そしてonFailureコールバックメソッドでException(多分FirebaseAuthException)を捕まえることができます。

auth.signInWithEmailAndPassword(loginRequest.id, loginRequest.password) 
    .addOnFailureListener(new OnFailureListener() { 
    @Override 
    public void onFailure(@NonNull Exception e) { 
     if (e instanceof FirebaseAuthException) { 
     ((FirebaseAuthException) e).getErrorCode()); 
     } 
    } 
    }); 

SignIn処理が失敗した理由を知りたい。 onFailure

は、私は次のように行うことができると思う:

  1. eインスタンスタイプチェック(電子INSTANCEOF FirebaseAuthInvalidUserExceptionまたはFirebaseAuthInvalidCredentialsExceptionか,,,)
  2. e.getErrorCode()

私が入力したくありませんチェック(汚れている)。
私は選択肢2の方法を好む。しかし、私はe.getErrorCode()戻り値のコレクションの定義を見つけることができませんでした。 (それが定義されている?) 例えばERROR_INVALID_EMAILERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIALなど

Firebase auth failedの理由を確認するための最良の方法である私に教えてください。

ありがとうございました。

答えて

7

私は同じ疑念を抱いていましたが、ドキュメントに関する情報が少し見つかりました。パスワードの強度が十分でない場合 FirebaseAuthInvalidCredentialsExceptionはメール場合にスロースロー

FirebaseAuthWeakPasswordException:

例外:

たとえば、あなたがcreateUserWithEmailAndPasswordをこの方法を使用している中で、あなたは彼らのdocumentation page以下の例外で見ることができますアドレスが不正です 指定された電子メールアドレスを持つアカウントが既に存在する場合にスローされます

各例外の

には、例えば、またFirebaseAuthUserCollisionException

のための1つのドキュメントのページがあり、ここでは、さまざまなエラーの種類を確認できます。createUserWithEmailAndPassword(文字列、文字列を持つ新しいアカウントを作成しようとしている

ERROR_EMAIL_ALREADY_IN_USEを)、別のアカウントで電子メールアドレスがすでに使用されている場合は、ユーザの電子メールアドレスを変更することができます。 他のアカウントで使用中の電子メールアドレスを示すクレデンシャルでsignInWithCredential(AuthCredential)を呼び出すと、ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIALが呼び出されます。このエラーは、「電子メールアドレスごとに1つのアカウント」設定がFirebaseコンソールで有効になっている場合にのみスローされます(推奨)。あなたはgetErrorCode()を行うと、これらの定数のいずれかの文字列を比較するのであれば、あなたは、例外の正確な原因を知ることができます使用

に、既に別のアカウントに対応するAuthCredentialをユーザにリンクしようとし ERROR_CREDENTIAL_ALREADY_IN_USE。

希望します。

7

Firebaseライブラリ内にいくつかのコードが見つかりましたが、これまでに見た障害メッセージと似ています。しかし、haventはまだ試しました。あなたはそれを試すことができます。

+0

これらのエラーコードで使用できるパブリック静的文字列定数はありますか? (例えばFirebaseAuthUserCollisionException.ERROR_EMAIL_ALREADY_IN_USE) – shaunkawano

+0

そうは思わない。適切な実装は@ Lancelotの答えと同じです。あなたの第一の選択肢。それぞれの例外を別々に処理するのは汚れていない方が良いです。 2番目を選択しても、それぞれのケースを処理します。それは同じ量のコードのようです。 – uguboz

+0

あなたの情報をお寄せいただきありがとうございます。文字定数を宣言していただきありがとうございますが、定数が既に宣言されている場合はオートコンプリートで時間が節約されるため、文字列値を自分で入力するよりも安全です。あなた自身でそれらの弦。 – shaunkawano

1

電子メール+パスワード認証方式を有効にすると、Firebaseプロジェクトを動作させるためのアプリケーションを作成する必要があります。

移動先: 概要 - >別のアプリケーションを追加 - >必要に応じて次の手順を実行します。

皆さんに役立つことを願っています。乾杯!

関連する問題