Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase SDK身份验证包出现问题,一旦通过身份验证,就会自动加载场景_Android_Ios_Firebase_Unity3d - Fatal编程技术网

Android Firebase SDK身份验证包出现问题,一旦通过身份验证,就会自动加载场景

Android Firebase SDK身份验证包出现问题,一旦通过身份验证,就会自动加载场景,android,ios,firebase,unity3d,Android,Ios,Firebase,Unity3d,我一直在使用Firebase SDK(Auth软件包)中有关场景及其集成的功能。以下是它们的工作原理: 1st:加载场景 在这里,我刚刚添加了FirebaseInit代码,完全符合Patrick的建议,它的唯一功能是在所有内容正确加载后调用下一个场景(登录/注册) 2:登录/注册场景 在这里,我完成了所有的登录和注册逻辑。我设置了一个在两者之间交替的按钮(在画布中激活相应的父游戏对象)。用户登录后,第三个场景开始播放 3:应用程序的主屏幕场景 应用程序的主屏幕,用户可以在其中注销并返回登录场景

我一直在使用Firebase SDK(Auth软件包)中有关场景及其集成的功能。以下是它们的工作原理:

1st:加载场景

在这里,我刚刚添加了FirebaseInit代码,完全符合Patrick的建议,它的唯一功能是在所有内容正确加载后调用下一个场景(登录/注册)

2:登录/注册场景

在这里,我完成了所有的登录和注册逻辑。我设置了一个在两者之间交替的按钮(在画布中激活相应的父游戏对象)。用户登录后,第三个场景开始播放

3:应用程序的主屏幕场景

应用程序的主屏幕,用户可以在其中注销并返回登录场景

问题 我在第二个场景中添加了'LoadSceneWhenUserAuthenticated.cs',它可以正常工作(有点)。 它实际上做了它应该做的。如果我登录,退出游戏而不注销,然后再次打开它,它会直接返回到第三个场景。但有些事情正在发生,而且不应该发生

首先

注册用户时,我调用方法“CreateUserWithEmailAndPasswordAsync()”。一旦完成,它应该激活登录屏幕并停留在那里,等待用户填写密码,但“FirebaseAuth.DefaultInstance.StateChanged”将发挥作用,并强制加载第三个屏幕,跳过应采取的其他几个步骤(例如电子邮件注册)

正如我在上面第1条末尾提到的,如果我尝试登录到一个没有验证其电子邮件的帐户,它会工作!(由于场景中添加了“LoadSceneWhenUserAuthenticated.cs”)。代码:

我知道可以通过在登录场景之前添加一个额外的场景来解决这个问题(就像Patrick在youtube视频中所做的那样),但在我的应用程序中没有任何意义。它实际上只会损害它的用户体验

帕特里克的视频:


我很高兴我的视频有帮助

我的架构不可能适用于每一款游戏,我试图将其简化到最低限度,让人们开始游戏。您可以通过在
HandleAuthStateChanged
中添加额外的签入来获得所需的功能:

private void HandleAuthStateChanged(object sender, EventArgs e)
{
    if (_auth.CurrentUser != null && !_auth.CurrentUser.IsAnonymous && _auth.CurrentUser.IsEmailVerified)
    {
        SceneManager.LoadScene(_sceneToLoad);
    }
}
但这听起来确实像是,在这一点上,您需要构建一个更健壮的注册/登录流,以适合您的用例

如果您需要更多帮助,我建议您在或上重新发布。这些资源可能更适合于讨论不同体系结构的各种优缺点或随口吐痰的想法(并且可以在评论中自由链接到任何新帖子,以便我自己或其他感兴趣的人可以跟进)

private void HandleAuthStateChanged(object sender, EventArgs e)
{
    if (_auth.CurrentUser != null && !_auth.CurrentUser.IsAnonymous && _auth.CurrentUser.IsEmailVerified)
    {
        SceneManager.LoadScene(_sceneToLoad);
    }
}