我在doc之后的Unity应用中创建了一个简单的密码登录,但它运行正常,但我想处理不同类型的错误,因为task.Exception
没有返回错误代码我不知道如何继续。
我找到this但它似乎与Firebase版本不同,因为登录方法不同......
答案 0 :(得分:4)
Firebase有一个AuthError枚举,告诉你FirebaseException中每个ErrorCode的含义,文档在这里: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;
}
答案 1 :(得分:2)
我终于找到了一种方法,只显示错误信息:
FirebaseException error = task.Exception.InnerExceptions[0] as FirebaseException;
string errorMsg = error.ToString();
然而,它并没有解决原始问题,因为看起来这是Firebase for Unity中缺少的东西(至少目前为止)。
答案 2 :(得分: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;
}
});
我认为这可能就是你想要的。这将显示"错误:"接着是消息是什么,真的很干净。
答案 3 :(得分:0)
对我来说,你们帮了很多忙,但我只得到了一部分。我只是想从 Firebase.FirebaseException 获取特定消息,例如,当电子邮件无效或无效时 - 只是我希望响应转到屏幕而不是仅到控制台。
这为我修好了:
announcements.text = regTask.Exception.InnerExceptions[0].InnerException.Message;
这个“regTask”是注册用户任务:“auth.CreateUserWithEmailAndPasswordAsync(email, password)”。