【发布时间】:2018-10-22 04:30:21
【问题描述】:
以下是我在统一的 firebase 中的主要登录块。当我摆脱它时它工作正常:
Debug.Log(user.TokenAsync(false).Result);
但是,出于安全考虑,我必须有办法处理会话。 Firebase 甚至建议您采用这种方式。无论您做什么,无论是假还是真,应用程序都会挂起并且永远不会继续。我是否错误地使用了 tokenasync?
我也尝试过使用注释掉的内容:
//StatusText.text = FirebaseAuth.DefaultInstance.CurrentUser.TokenAsync(true).Result;
但是当前用户由于某种原因返回 null
FirebaseUser InvalidVerificationUser;
public void OnLoginButtonPressed()
{
LoginButton.interactable = false;
StatusText.text = "Logging in, please wait...";
FirebaseAuth.DefaultInstance.SignInWithEmailAndPasswordAsync(Email.text, Password.text).ContinueWith((obj) =>
{
if (obj.IsFaulted || obj.IsCanceled)
{
StatusText.text = obj.Exception.InnerExceptions[0].ToString().Substring(28);
LoginButton.interactable = true;
return;
}
else if (!obj.Result.IsEmailVerified)
{
StatusText.text = "You must verify your email before logging in";
ResendObject.SetActive(true);
InvalidVerificationUser = obj.Result;
LoginButton.interactable = true;
return;
}
FirebaseUser user = obj.Result;
if (user.DisplayName == "")
{
StatusText.text = "CRITICAL: No Username Found!";
}
else
StatusText.text = "Hello: " + user.DisplayName;
LoginButton.interactable = true;
Debug.Log(user.TokenAsync(false).Result);
});
//StatusText.text = FirebaseAuth.DefaultInstance.CurrentUser.TokenAsync(true).Result;
}
【问题讨论】:
-
您忘记了
{ }的else声明。请注意,StatusText.text = "Hello: " + user.DisplayName将在else时执行 但LoginButton.interactable = true和Debug.Log(user.TokenAsync(false).Result)将始终执行。你确定那是你想要的吗?我怀疑那里有 null 问题 -
实际上我没有忘记 { } 因为我不希望其他 2 行只在 else 中工作。但是我知道这不是一个空问题,因为当我成功时它仍然挂起
标签: c# firebase unity3d firebase-authentication