以下是我统一使用Firebase的主要登录块。当我摆脱掉时它工作正常:
Debug.Log(user.TokenAsync(false).Result);
但是,出于安全考虑,我必须有一种处理会话的方法。 Firebase甚至建议您这样做。无论您执行的是false还是true,无论执行什么操作,应用程序都将挂起并且永远不会继续。我是否错误地使用了tokenasync?
我也尝试使用注释掉的内容:
//StatusText.text = FirebaseAuth.DefaultInstance.CurrentUser.TokenAsync(true).Result;
但是currentuser由于某种原因返回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;
}
答案 0 :(得分:0)
SignInAnonymouslyAsync
挂起Unity客户端时我遇到了同样的问题,我通过等待SignInAnonymouslyAsync
和TokenAsync
来解决这个问题。
类似的事情可能会帮助您:
FirebaseUser firebaseUser = await AuthDefaultInstance.SignInWithEmailAndPasswordAsync(Email.text, Password.text);
if (!firebaseUser.IsEmailVerified)
{
// do stuff here
}
else if (firebaseUser.DisplayName == string.Empty)
{
// do stuff here
}
else
{
string token = await firebaseUser.TokenAsync(true);
}
答案 1 :(得分:0)
重点是 TokenAsync
是返回 Task
的 API
因此,每个人都不要直接使用 .Result
对象的 Task
,这是常见的做法。任何任务不仅仅是 firebase api。尤其是团结。有死锁死锁的倾向
改用 async/await
或 task.ContinueWith(callBack)