问题:当我使用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);
}
}
答案 0 :(得分:0)
我不能说这是问题所在,但是在RegisterUser
中,您正在检查task.IsCompleted
。无论任务是否成功,这总是true
(我经常使用yield return new WaitUntil(()=>task.IsCompleted);
等待Unity协程中的异步调用)。
我怀疑您可能没有:
Downloaded your google-services.json文件。
此外,如果您要在移动设备上进行测试,那么移动键盘肯定会给您的密码增加额外的空间(特别是如果您尚未配置输入类型的话)。如果您已完成上面列出的所有其他操作,请在键入用户名或密码后尝试删除其中的一个字符,以查看是否可以使用该功能。
最后,如果您需要任何一个视觉上的演练。我已经创建了Getting started with Firebase Authentication in Unity video。