Firebase Auth匿名登录

Coo*_*oop 15 firebase firebase-authentication

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

我希望用户每次作为访客玩游戏时始终获得相同的ID.我看到有些应用程序甚至在卸载/重新安装后仍然存在.用户获取新ID的情况是什么?

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

sfr*_*ini 4

因此,就我而言,我想显示一个带有注册的登录屏幕,但也显示“跳过登录”的选项。如果用户多次跳过登录,我正在执行signInAnonymous,我认为它正在重用用户,但事实并非如此。

所以我这样解决了:

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)
        });
      }

    });

  }
Run Code Online (Sandbox Code Playgroud)

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