Firebase SDK 身份验证包在身份验证后自动加载场景的问题 Unity
Posted
技术标签:
【中文标题】Firebase SDK 身份验证包在身份验证后自动加载场景的问题 Unity【英文标题】:Firebase SDK Auth Package Trouble with Automatically Loading Scene Once Authenticated Unity 【发布时间】: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 视频中所做的那样),但这在我的应用程序中没有任何意义。它实际上只会损害它的用户体验。
帕特里克的视频:
https://www.youtube.com/watch?v=52yUcKLMKX0&t=264s
【问题讨论】:
【参考方案1】:很高兴我的视频有帮助!
我的架构不会适用于所有游戏,我试图将其简化为最低限度以让人们开始。您可以通过在HandleAuthStateChanged
中添加额外的检查来获得所需的功能:
private void HandleAuthStateChanged(object sender, EventArgs e)
if (_auth.CurrentUser != null && !_auth.CurrentUser.IsAnonymous && _auth.CurrentUser.IsEmailVerified)
SceneManager.LoadScene(_sceneToLoad);
但听起来,在这一点上,您需要构建一个更强大的注册/登录流程以适合您的用例。
如果您需要更多帮助,我可能会建议您在 community mailing list 或 subreddit 上重新发布。这些资源可能更适合讨论不同架构的各种优缺点或发表观点(并随时在评论中链接到任何新帖子,以便我自己或其他感兴趣的人可以跟进)。
【讨论】:
以上是关于Firebase SDK 身份验证包在身份验证后自动加载场景的问题 Unity的主要内容,如果未能解决你的问题,请参考以下文章
使用 Facebook 令牌的 Firebase Unity SDK 身份验证
Firebase - 使用 firebase admin sdk 跨子域共享身份验证
使用 node.js admin sdk 创建令牌时的 Firebase REST 身份验证