【发布时间】:2021-04-06 13:50:29
【问题描述】:
我被 Firebase SDK(Auth 包)的有关场景及其集成的功能所困扰。它们的工作原理如下:
第一:加载场景
在这里,我刚刚完全按照 Patrick 的建议添加了 FirebaseInit 代码,它的唯一功能是在一切正常加载后调用下一个场景(登录/注册)。
第二个:登录/注册场景
在这里我做了所有的登录和注册逻辑。我设置了一个在两者之间交替的按钮(在画布中激活相应的父游戏对象)。用户登录后,第 3 个场景开始发挥作用。
3rd:应用的主屏幕场景
应用程序的主屏幕,用户可以在此处注销并返回登录场景。
问题
我在第二个场景中添加了“LoadSceneWhenUserAuthenticated.cs”,它可以工作(有点)。 它实际上做了它应该做的事情。如果我登录,退出游戏而不退出,然后再次打开它,它确实会直接回到第三个场景。但是有些事情正在发生,它们不应该发生。
第一
当我注册用户时,我调用方法“CreateUserWithEmailAndPasswordAsync()”。完成后,它应该激活登录屏幕并停留在那里,等待用户填写密码,但“FirebaseAuth.DefaultInstance.StateChanged”开始发挥作用并强制加载第三个屏幕,跳过其他几个步骤应该采取(例如电子邮件注册)。
第二
正如我在上面第 1 条末尾提到的,如果我尝试登录一个没有验证电子邮件的帐户,它可以工作! (由于场景中添加了“LoadSceneWhenUserAuthenticated.cs”)。代码:
var LoginTask = auth.SignInWithEmailAndPasswordAsync(_email, _password);
LoginTask.ContinueWithOnMainThread(task =>
{
if (task.IsCanceled || task.IsFaulted)
{
Firebase.FirebaseException e =
task.Exception.Flatten().InnerExceptions[0] as Firebase.FirebaseException;
GetErrorMessage((AuthError)e.ErrorCode, warningLoginText);
return;
}
if (task.IsCompleted)
{
User = LoginTask.Result;
if (User.IsEmailVerified == true)
{
UIControllerLogin.instance.MainScreenScene();
}
else
{
warningLoginText.text = Lean.Localization.LeanLocalization.GetTranslationText($"Login/VerifyEmail");
}
我知道可以通过在登录场景之前添加一个额外的场景来解决此问题(正如 Patrick 在 youtube 视频中所做的那样),但这在我的应用程序中没有任何意义。它实际上只会损害它的用户体验。
帕特里克的视频:
【问题讨论】:
标签: android ios firebase unity3d