当我运行CreateUserWithEmailAndPasswordAsync()任务返回作为IsCompleted和FirebaseUser也不是空,但UserID和电子邮件是空/空。我可以在firebase控制台中看到新用户(带有UserID)。
当尝试使用新创建的User进行SignInWithEmailAndPasswordAsync()时也会发生同样的事情。但是当我使用旧用户帐户SignInWithEmailAndPasswordAsync()时,一切都可以正常工作。
这很奇怪,因为这是我一年前用过的代码。同时我也将Firebase SDK更新到了7.0.2。这可能是问题的原因吗?
下面是我创建一个新用户的代码:public static async Task<CallbackMessage> RegisterNewUser(string email, string password)
{
CallbackMessage callback = new CallbackMessage();
callback.isSuccess = false;
if (!await DatabaseManager.CheckConnection())
{
callback.notConnected = true;
return callback;
}
return await auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task =>
{
if (task.IsCanceled)
{
callback.errorMessage = "Create User was canceled";
}
else if (task.IsFaulted)
{
callback.errorMessage = GetErrorMessage(task.Exception);
}
else if (task.IsCompleted)
{
FirebaseUser newUser = task.Result;
Debug.Log("User created succesfully! userID: " + newUser.UserId);
callback.userID = newUser.UserId;
callback.email = newUser.Email;
callback.isSuccess = true;
}
CleanTask(task);
return callback;
});
}
在这件事上真的需要一个正确的方向:)
我能够解决它。对Firebase认证服务的怀疑表示歉意。
在我的authstatechange代码我添加了一个Signout()每当用户登录,但不是emailVerified尚未。这就是问题所在。
我猜发生了什么:当用户创建被调用时,它立即签署用户,然后去Firebase设置东西在那里。同时,我注销了用户,因为它没有经过电子邮件验证。当回调函数返回时,它在去Firebase之前查找它登录的FirebaseUser,但一无所获。
就像某人正要坐下时把椅子从他身下拉开:p