【问题标题】:Firebase unity android app authentication not workingFirebase unity android 应用程序身份验证不起作用
【发布时间】:2019-12-26 23:28:30
【问题描述】:

问题:当我使用 Firebase 控制台手动创建用户时,我无法在我的统一应用程序中使用该新帐户登录,并出现错误 UserNotFound。但是当我使用我的统一应用注册用户时,我可以成功登录。

这是我的代码,有人能看出它有什么问题吗?

using Firebase.Auth;
using UnityEngine.SceneManagement;
using TMPro;

public class SignInScript : MonoBehaviour
{
    public TextMeshProUGUI emailInput, passwordInput;

    public void Login(){
        FirebaseAuth.DefaultInstance.SignInWithEmailAndPasswordAsync(emailInput.text,passwordInput.text).ContinueWith((task=>{
            if(task.IsFaulted){
                Firebase.FirebaseException e = task.Exception.Flatten().InnerExceptions[0]
                    as Firebase.FirebaseException;
                print(emailInput.text);

                PrintErrorMessage((AuthError)e.ErrorCode);
                return;
            }
            if(task.IsCompleted){
                // print("User is LoGGed IN");
                //SceneChange();
                SceneManager.LoadScene("homeScene");
            }
        }));
    }

    public void RegisterUser(){
        if(emailInput.text.Equals("") || passwordInput.text.Equals("")){
            print("Please Enter a Email AND Pass to Register");
            return;
        }

        FirebaseAuth.DefaultInstance.CreateUserWithEmailAndPasswordAsync(emailInput.text,passwordInput.text).ContinueWith((task=>{ 
            if(task.IsCompleted){
                print("Registration Complete");
            } else {
                print("Registration Failed");
            }
        }));
    }

    void PrintErrorMessage(AuthError errorCode){
        string msg="";
        msg = errorCode.ToString();

        print(msg);
    }
}

【问题讨论】:

  • 你确定当你在firebase控制台中使用同一个实例时
  • @BugFinder 如何找到那个?
  • 您需要检查 firebase 应用使用的详细信息是否与您正在使用的控制台应用相同
  • 你能添加你的统一应用的用户注册码吗?可能账户类型不同
  • @samthecodingman 我已经更新了代码请检查

标签: android firebase unity3d google-cloud-firestore firebase-authentication


【解决方案1】:

我不能说这是问题所在,但在RegisterUser 中,您正在检查task.IsCompleted。无论任务失败还是成功,这始终是true(我经常使用yield return new WaitUntil(()=>task.IsCompleted); 来等待Unity 协程中的异步调用)。

我怀疑你可能没有机会:

启用电子邮件和密码:

Downloaded your google-services.json 文件。

uploaded your SHA-1

此外,如果您在移动设备上进行测试,我肯定会遇到移动键盘在密码中添加额外空格的问题(尤其是在您没有配置输入类型的情况下)。如果您已完成我上面列出的所有其他操作,请在输入用户名或密码后尝试删除其中的一个字符,看看是否可行。

最后,如果您需要其中任何一个的可视化演练。我创建了一个Getting started with Firebase Authentication in Unity video

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2017-02-28
    • 2020-12-15
    • 2018-06-06
    相关资源
    最近更新 更多