当前位置: 首页 > 知识库问答 >
问题:

Firebase身份验证匿名登录

双浩涆
2023-03-14

当使用Firebase身份验证匿名帐户时,它偶尔会在系统中创建一个新的用户ID,有时它会使用相同的用户ID。我真的希望每次都能创建相同的用户ID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据。这实际上是我开始使用Firebase的原因。即使在重新启动应用程序等之后,我如何始终维护一个匿名帐户来保持相同的用户ID?

我希望用户每次以访客身份玩游戏时都能获得相同的ID。我看到有些应用程序在卸载/重新安装后仍然存在。用户将获得新ID的情况是什么?

编辑:按照建议实现firebaseAuth后,它将维护匿名用户ID,除非我完全卸载应用程序并重新安装。然后,不再检测到匿名用户ID,这意味着用户将不再拥有其来宾游戏数据。此外,假设用户以来宾身份登录并选择注销(即auth.Signout()),那么他们也将无法再次访问其原始来宾游戏数据。我还是遗漏了一些东西,还是Firebase Auth没有实现我的初衷?

共有3个答案

韩寒
2023-03-14

当您呼叫注销时,您的客人将永远注销。如果你想留住你的客人,就不要调用SignOut方法

相化
2023-03-14

您可以使用自定义身份验证系统。因为“作为客人播放”将只为特殊设备指定。您可以使用设备ID作为自定义令牌,然后调用Firebase身份验证方法:

auth.SignInWithCustomTokenAsync(custom_token).ContinueWith{.......

您可以提供“custom_token”作为设备ID。您可以通过以下方式获取设备ID:

string deviceID = SystemInfo.deviceUniqueIdentifier;

希望这有所帮助...

段良弼
2023-03-14

因此,在我的例子中,我想显示一个带有注册的登录屏幕,但也可以选择跳过登录。如果用户多次跳过登录,我认为这是在重用用户,但不是。

所以我这样解决了这个问题:

componentDidMount() {

    this.unsubscriber = firebase.auth().onAuthStateChanged((user) => {
      this.setState({ user: user, loadingUser: false}, () => {
        if (this.state.user != null && this.state.user.isAnonymous == false)
          this.startApp();
      });
    });

  }




skip = () => {
    this.setState({loading: true}, () => {
      if (this.state.user != null && this.state.user.isAnonymous == true)
        this.startApp();
      else {
        firebase.auth().signInAnonymouslyAndRetrieveData().then((result) => {
          this.setState({user: result.user}, () => {
            this.startApp()
          })
        })
        .catch(err => {
          this.setState({loading: false});
          alert(err)
        });
      }

    });

  }

代码是React Native,但它应该可以帮助您了解逻辑。我等待auth状态并临时存储用户。如果不是匿名的,我就启动主屏幕。如果是匿名的,我给用户注册的选项。如果它仍然想跳过,那么我只需启动应用程序,这样我就可以重复使用ID。

 类似资料:
  • 在本章中,我们将匿名认证用户。 步骤1 - 启用匿名身份验证 这和我们以前的章节是一样的。需要打开Firebase信息中心,点击侧边菜单中的Auth和标签栏内的认证方法,需要启用匿名身份验证。 第2步 - 登录功能 可以使用方法进行此认证。 示例 让我们来看看下面的例子,参考示例代码 -

  • 使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。

  • 将匿名帐户转换为永久帐户的文档指出了流程的3个步骤,但是步骤2似乎违反了步骤1。 当用户注册时,完成用户身份验证提供者的登录流程,直到(但不包括)调用其中一个身份验证提供者。用方法来表示。例如,获取用户的Google ID令牌、Facebook访问令牌或电子邮件地址和密码 获取新身份验证提供程序的身份验证凭据:

  • 在本章中,我们将匿名验证用户。 第1步 - 启用匿名身份验证 这与我们前面章节中的过程相同。 您需要打开Firebase仪表板,单击侧面菜单中的Auth和标签栏内的SIGN-IN-METHOD 。 您需要启用匿名身份验证。 第2步 - 登录功能 我们可以使用signInAnonymously()方法进行此身份验证。 例子 (Example) 让我们考虑以下示例。 firebase.auth().s

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 最近,当我试图用Firebase匿名登录时,我得到以下错误 {“错误”:{“代码”:400,“消息”:“admin_only_operation”,“错误”:[{“消息”:“admin_only_operation”,“域”:“全局”,“原因”:“无效”}]}} 检查JSON消息是否正确格式化并包含有效字段(例如,确保传入正确的数据类型)。 我正在使用API提供的函数,所以我不知道我怎么可能实现错