2017-08-29 4 views
1

Wie können Sie bei Verwendung des Google Firebase Authentifizierungs-Plugins in Unity Fehlercodes von fehlerhaften Anforderungen lesen?Google Firebase Auth in Unity: Lesen von Fehlercodes

Zum Beispiel in diesem Code:

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

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

Sie können sehen, dass, wenn ein Fehler auftritt, ich aus der Ausnahme anmelden kann, das druckt die folgenden:

Fehler aufgetreten: System.AggregateException : Ausnahme vom Typ 'System.AggregateException' wurde ausgelöst.

Firebase.FirebaseException: Zu diesem Bezeichner gibt es keinen Benutzerdatensatz. Der Benutzer wurde möglicherweise gelöscht.

Das ist sehr menschlich lesbar, aber nicht sehr elegant in eine switch-Anweisung zu setzen. Gibt es eine Möglichkeit für mich, die Aufgabe zu transformieren. Ausnahme als FirebaseException, damit ich den Fehlercode bekommen kann? Und gibt es irgendwo eine Liste dieser Fehlercodes? Ich kann die Dokumentation für die FirebaseException finden, aber die Fehlercodes sind nicht vorhanden. Danke für die Hilfe!

Edit:

So, während ich immer noch auf eine Antwort der Hoffnung bin, ich bin gekommen, zu glauben, dass Google-Entwickler erwarten Aussagen Decke Fehler auf dem Kontext der Anfrage basieren. Wenn Sie sich beispielsweise nicht mit einer E-Mail-Adresse und einem Passwort anmelden (wie im obigen Code), sollten Sie die allgemeine Anweisung "E-Mail oder Passwort ist falsch" verwenden. Das Problem damit ist, dass ich den Benutzer nicht den Unterschied zwischen ihnen erkennen lassen kann, die die unrichtigen Details versieht, die sie eine E-Mail eintragen, die überhaupt kein Konto hat.

Antwort

0

Hoffentlich hast du das jetzt gelöst, aber ich habe nur über das exakt gleiche Problem kommen, und ich werde meine Lösung teilen:

Nach MSDN, System.AggregateException ist eine Darstellung von einem oder mehreren Fehlern das kann während der Ausführung der Aufgabe auftreten.

Daher werden Sie in einer Schleife durch die Innerexception (n) von der Aggregate präsentiert müssen, und suchen Sie den Verdacht FirebaseException:

die FirebaseException Suchen:

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); 
    } 
} 

Abrufen der Fehlercode:

Ich wünschte, ich könnte hier helfen, aber ich habe nichts gefunden - diese sind nicht innerhalb der offic dokumentiert API, AFIK. Die einzigen Referenzzustände sind: "If the error code is 0, the error is with the Task itself, and not the API. See the exception message for more detail."