2017-08-09 120 views
2

我在我的Unity应用程序中创建了一个简单的密码登录,后面跟着doc,它工作正常,但是我想处理不同类型的错误,并且因为task.Exception没有返回错误代码我不知道如何继续。如何处理Unity上的Firebase身份验证错误

我发现this,但它似乎并不相同火力地堡的版本,因为登录的方法是不同的...

+0

它好像你指的是遗留文档。 Firebase现在是Google和新文档的一部分,可在https://firebase.google.com/docs/auth/ – SourabhV

+0

上查看。我确实遵循了新文档,但是我没有发现与Unity中错误处理相关的任何内容:https:/ /firebase.google.com/docs/auth/unity/password-auth ios有一些相同的功能,但不支持统一功能(ios:https://firebase.google.com/docs/auth/ios/errors)我错过了什么? –

+0

这是正确的,唯一暴露的是task.Exception,它包含导致问题但异常杂乱的异常列表。 Firebase在与任务dll文件相关的4.0.3 sdk中做了一些更改。我没有检查过,但你可能想看看。 – SourabhV

回答

1

我终于找到了一种方法,只显示错误消息,使用此:

FirebaseException error = task.Exception.InnerExceptions[0] as FirebaseException; 
string errorMsg = error.ToString(); 

但是它并没有解决原始问题,因为它似乎在Firebase for Unity中缺少一些东西(至少现在是这样)。

0
FirebaseAuth.DefaultInstance.CreateUserWithEmailAndPasswordAsync (Email.text, Password.text). 
ContinueWith (task => { 
     if (task.IsCanceled) 
     { 
      Debug.LogError ("CreateUserWithEmailAndPasswordAsync was canceled"); 
      return; 
     } 
     if (task.IsFaulted) 
     { 
      Debug.LogError ("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception); 
      //  
      ErrorText.text = "Error: " + task.Exception.InnerExceptions[0].Message; 
      // 
      return; 
     } 
}); 

我认为这可能是你想要的。这将显示“错误:”,接着是什么信息和真正干净。

+0

感谢您的答案,但想法是显示一个不同的日志从默认的Firebase之一,为了例如处理几种语言。这就是为什么我会更喜欢每种错误类型的ID列表,而不是分析消息字符串来检测错误类型,然后向用户显示我自己的版本。 –

+0

但也许我的问题是一个功能要求,而不是“bug” –

0

火力地堡有AuthError枚举,告诉你在FirebaseException每个错误代码的含义,该文件是在这里:https://firebase.google.com/docs/reference/unity/namespace/firebase/auth

用西班牙语得到错误信息我这样做:

public static string GetErrorMessage(Exception exception) 
{ 
    Debug.Log(exception.ToString()); 
    Firebase.FirebaseException firebaseEx = exception as Firebase.FirebaseException; 
    if (firebaseEx != null) 
    { 
     var errorCode = (AuthError)firebaseEx.ErrorCode; 
     return GetErrorMessage(errorCode); 
    } 

    return exception.ToString(); 
} 

private static string GetErrorMessage(AuthError errorCode) 
{ 
    var message = ""; 
    switch (errorCode) 
    { 
     case AuthError.AccountExistsWithDifferentCredentials: 
      message = "Ya existe la cuenta con credenciales diferentes"; 
      break; 
     case AuthError.MissingPassword: 
      message = "Hace falta el Password"; 
      break; 
     case AuthError.WeakPassword: 
      message = "El password es debil"; 
      break; 
     case AuthError.WrongPassword: 
      message = "El password es Incorrecto"; 
      break; 
     case AuthError.EmailAlreadyInUse: 
      message = "Ya existe la cuenta con ese correo electrónico"; 
      break; 
     case AuthError.InvalidEmail: 
      message = "Correo electronico invalido"; 
      break; 
     case AuthError.MissingEmail: 
      message = "Hace falta el correo electrónico"; 
      break; 
     default: 
      message = "Ocurrió un error"; 
      break; 
    } 
    return message; 
}