0

私はFirebaseを使用しています。私は、 "createUserWithEmailAndPassword"と呼ばれるユーザ用のアカウントを作成する方法を使用しています。createUserWithEmailAndPasswordメソッドの例外をオーバーライドする方法は?

Firebase referencesで、このメソッドの例外の1つが、パスワードが6文字未満のときに呼び出される「FirebaseAuthWeakPasswordException」であることが判明しました。

私はこの例外をキャッチし、ユーザーに自分の言葉でメッセージを表示し、 が、私は、私はこのエラーを取得する&キャッチしてみてくださいと方法包むときにしたい:「例外「com.google.firebase.auth.FirebaseAuthWeakPasswordExceptionを'は対応するtryブロック "にスローされません。 私はしばらくこの問題を解決しようとしましたが、運がありません。 ここでのコードのスニペットがあり、あなたがこの私の姿を助けることを願って:あなたは正しいエラーコードまたは例外を得ることができない理由ですどんなFailureListenerを追加していない

mAuth.createUserWithEmailAndPassword(email, pass) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 

       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        // Log.d(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful()); 

        // If sign in fails, display a message to the user. If sign in succeeds 
        // the auth state listener will be notified and logic to handle the 
        // signed in user can be handled in the listener. 

        if(task.isSuccessful()) 
        { 
         Toast.makeText(getApplicationContext(),"Account has created!",Toast.LENGTH_SHORT).show(); 
        } 
        if (!task.isSuccessful()) { 
         Toast.makeText(getApplicationContext(), "failed!", 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 

      }); 

答えて

1

それはあなたのために何かを変更した場合、私に知らせてください。この

mAuth.createUserWithEmailAndPassword(email, pass) 
     .addOnFailureListener(this, new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception e) { 
         if (e instanceof FirebaseAuthException) { 
          ((FirebaseAuthException) e).getErrorCode()); 
          //your other logic goes here 
         } 
        } 
       }) 

ようMauthのに追加します。

+0

はどうもありがとうございました! これで動作しています。ちょうど私の質問の参考リンクのように、考えられる例外ごとに "e instanceof"を変更します: FirebaseAuthWeakPasswordException、FirebaseAuthInvalidCredentialsException、FirebaseAuthUserCollisionException。 – zb22

+0

うれしいよ:)。がんばろう。 –

1

あなたはtask.getException()を呼び出してから、instanceofを使用する必要があります。

mAuth.createUserWithEmailAndPassword("[email protected]", "only5") 
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      Log.i(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful()); 

      if (!task.isSuccessful()) { 
       Log.w(TAG, "onComplete: Failed=" + task.getException().getMessage()); 
       if (task.getException() instanceof FirebaseAuthWeakPasswordException) { 
        Toast.makeText(MainActivity.this, "Weak Password", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 
    }); 
+0

あなたのアプローチにも感謝します。私にはかなり有益です。 –

+0

ええ、それを解決する別の良い方法です、ありがとう。 私は "task.getException()。getMessage()"をビルドインエラーメッセージを与える投稿する前に、 "instanceof"を使用する方法は私の心を越えていませんでした。 – zb22

関連する問題