2016-06-12 14 views
1

新しいFirebase sdkの認証でエラーを処理する方法は?以前のバージョンでは、私はOnAuthenticationErrorメソッドを見つけることができ、FirebaseExceptionエラーが発生しましたが、新しいバージョンではこのようなメソッドは表示されません。何らかの理由で電子メールパスワードでユーザーを作成すると例外が発生します。私はこの例外をつかむために見ることができる唯一の方法は、task.getException.getMessage()とこのメッセージで私はさまざまなエラーメッセージを確認し、次に発生したエラーを取得します。電子メールでユーザを作成する際のFirebaseの例外処理

答えて

1

新しいFirebaseでは、多くの方法でいわゆるTaskが返されます。これまでにJavaScriptで約束をしてきたのであれば、それらは非常に似ているでしょう。タスクで

、あなたはいくつかのコールバックを得ることができます:タスクは

  • タスクが
  • 失敗した後に呼び出され、障害のリスナーを、成功すると呼び出されます

    • 成功リスナーを、あなたのケースでは、タスクが(成功したりしない)完了後に呼び出され、完了リスナー、

    そう、creating a userの失敗を探しています:

    auth.createUserWithEmailAndPassword(email, password) 
        .addOnFailureListener(new OnFailureListener() { 
         public void onFailure(@NonNull Exception e) { 
          Log.e(TAG, "Unable to create user", e); 
         } 
        }); 
    

    例外は、あなたがそれにgetErrorCode()を呼び出すことができることを意味しFirebaseAuthExceptionのサブクラスになります。これにより、エラーコードが返されます。実際には文字列ですが、スイッチケースで簡単に取り込める形式のauth/errorです。

    完了リスナーを使用するサンプルについてはdocumentation on creating a userも参照してください。

  • +0

    感謝。私はonFailureListenerを追加すると、オーバーライドされたonFailureメソッドを追加すると、このメッセージでエラーメッセージのみを取得できるパラメータ '例外'が発生します。この例外を処理するために、いくつかの事前定義された文字列を繰り返します。私は古いfirebase sdkのようにより良い方法を探していました。 –

    +0

    私は確かに署名が間違っていた。私は今あなたのためにAndroid Studioでそれをキャプチャしました。 2.x SDKには数値エラーコードがあります。すべての文字列エラーコードの処理はあまり変わりません。 –

    0

    主な例外:ご返信用

    firebaseAuth.createUserWithEmailAndPassword(email, pass) 
         .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
          @Override 
          public void onComplete(@NonNull Task<AuthResult> task) { 
          if(task.isSuccessful()) 
           { 
           //--If success   
    }else if (task.getException() instanceof FirebaseAuthUserCollisionException) 
    {       
        //If email already registered. 
    
    }else if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) { 
        //If email are in incorret format  
    
    }else if (task.getException() instanceof FirebaseAuthWeakPasswordException) { 
         //if password not 'stronger'      
    }else 
    { 
        //OTHER THING 
    } 
    } 
    }); 
    
    関連する問題