2017-08-29 35 views
1

UnityでGoogle Firebase認証プラグインを使用すると、フォールトリクエストのエラーコードをどのように読み取ることができますか?例えばUnityのGoogle Firebase Auth:エラーコードの読み方

、このコード内:

auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => { 
     if(task.IsFaulted){ 
      Debug.Log("ERROR ENCOUNTERED: " + task.Exception); 
      return; 
     } 

     if(task.IsCompleted){ 
      // Success! 
     } 
    }); 

あなたは、エラーが発生した場合、私は例外をログに記録することができていることがわかります、以下の印刷します

エラーが発生しました:System.AggregateExceptionを: 'System.AggregateException'型の例外がスローされました。

Firebase.FirebaseException:この識別子に対応するユーザーレコードがありません。ユーザーが削除された可能性があります。

これは非常に人間が判読できますが、switch文に入れるのは非常にエレガントではありません。私がエラーコードを取得できるように、私がtask.Exceptionをキャストするための方法はありますか?これらのエラーコードのリストはどこかにありますか?私はFirebaseExceptionのドキュメントを見つけることができますが、エラーコードはありません。助けてくれてありがとう!

編集:

だから私はまだ答えを期待していますが、私はGoogleが開発者が要求のコンテキストに基づいて、ブランケットエラーステートメントを使用することを期待していることを考えるようになりました。たとえば、上記のコードのように電子メールとパスワードでサインインできない場合は、「電子メールまたはパスワードが間違っています」という一般的な記述を使用する必要があります。その問題は、間違った詳細を提供しているのと、アカウントに関連付けられていない電子メールを入力したことの違いをユーザーに知らせることができないことです。

答えて

0

うまくいけば、あなたが今することでこれを解決してきましたが、私はちょうどまったく同じ問題に遭遇してきたと私は私の解決策を共有しましょう:

MSDNによると、System.AggregateExceptionは、1つ以上のエラーを表現したものですタスクの実行中に発生する可能性があります。

したがって、あなたはAggregateExceptionによって提示されたのInnerException(複数可)をループする必要がある、と疑わFirebaseExceptionを探しましょう:FirebaseExceptionを取得

取得

AggregateException ex = task.Exception as AggregateException; 
if (ex != null) { 
    Firebase.FirebaseException fbEx = null; 
    foreach (Exception e in ex.InnerExceptions) { 
    fbEx = e as Firebase.FirebaseException; 
    if (fbEx != null) 
     break; 
    } 

    if (fbEx != null) { 
    Debug.LogError("Encountered a FirebaseException:" + fbEx.Message); 
    } 
} 

エラーコード:

願い私はここで助けてもらえませんでしたが、何も見つかりませんでした - これらは役人の中には書かれていませんial API、AFIK。唯一のリファレンス状態:"If the error code is 0, the error is with the Task itself, and not the API. See the exception message for more detail."

関連する問題