我在我的Unity应用程序中创建了一个简单的密码登录,后面跟着doc,它工作正常,但是我想处理不同类型的错误,并且因为task.Exception
没有返回错误代码我不知道如何继续。如何处理Unity上的Firebase身份验证错误
我发现this,但它似乎并不相同火力地堡的版本,因为登录的方法是不同的...
我在我的Unity应用程序中创建了一个简单的密码登录,后面跟着doc,它工作正常,但是我想处理不同类型的错误,并且因为task.Exception
没有返回错误代码我不知道如何继续。如何处理Unity上的Firebase身份验证错误
我发现this,但它似乎并不相同火力地堡的版本,因为登录的方法是不同的...
我终于找到了一种方法,只显示错误消息,使用此:
FirebaseException error = task.Exception.InnerExceptions[0] as FirebaseException;
string errorMsg = error.ToString();
但是它并没有解决原始问题,因为它似乎在Firebase for Unity中缺少一些东西(至少现在是这样)。
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;
}
});
我认为这可能是你想要的。这将显示“错误:”,接着是什么信息和真正干净。
感谢您的答案,但想法是显示一个不同的日志从默认的Firebase之一,为了例如处理几种语言。这就是为什么我会更喜欢每种错误类型的ID列表,而不是分析消息字符串来检测错误类型,然后向用户显示我自己的版本。 –
但也许我的问题是一个功能要求,而不是“bug” –
火力地堡有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;
}
它好像你指的是遗留文档。 Firebase现在是Google和新文档的一部分,可在https://firebase.google.com/docs/auth/ – SourabhV
上查看。我确实遵循了新文档,但是我没有发现与Unity中错误处理相关的任何内容:https:/ /firebase.google.com/docs/auth/unity/password-auth ios有一些相同的功能,但不支持统一功能(ios:https://firebase.google.com/docs/auth/ios/errors)我错过了什么? –
这是正确的,唯一暴露的是task.Exception,它包含导致问题但异常杂乱的异常列表。 Firebase在与任务dll文件相关的4.0.3 sdk中做了一些更改。我没有检查过,但你可能想看看。 – SourabhV