如何在Unity上处理Firebase身份验证错误

时间:2017-08-09 10:13:31

标签: firebase unity3d firebase-authentication

我在doc之后的Unity应用中创建了一个简单的密码登录,但它运行正常,但我想处理不同类型的错误,因为task.Exception没有返回错误代码我不知道如何继续。

我找到this但它似乎与Firebase版本不同,因为登录方法不同......

4 个答案:

答案 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)

对我来说,你们帮了很多忙,但我只得到了一部分。我只是想从 F​​irebase.FirebaseException 获取特定消息,例如,当电子邮件无效或无效时 - 只是我希望响应转到屏幕而不是仅到控制台。

这为我修好了:

announcements.text = regTask.Exception.InnerExceptions[0].InnerException.Message;

这个“regTask”是注册用户任务:“auth.CreateUserWithEmailAndPasswordAsync(email, password)”。