Coo*_*oop 15 firebase firebase-authentication
使用Firebase Auth匿名帐户时,它偶尔会在系统中创建一个新的UserID,有时它会使用相同的UserID.我真的希望每次都创建相同的UserID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据.这实际上是我开始使用Firebase的原因.即使重新启动应用程序等,我如何始终维护匿名帐户以保持相同的用户ID?
我希望用户每次作为访客玩游戏时始终获得相同的ID.我看到有些应用程序甚至在卸载/重新安装后仍然存在.用户获取新ID的情况是什么?
编辑:按照建议实施firebase Auth后,它将维护匿名用户ID,除非我完全卸载应用程序并重新安装.然后不再检测到匿名用户ID,这意味着用户将不再拥有其来宾游戏数据.此外,假设用户以访客身份登录并选择退出(即auth.Signout()),那么他们也将无法再次访问其原始访客游戏数据.我还在这里遗漏一些东西,还是Firebase Auth没有实现我原来的意图?
因此,就我而言,我想显示一个带有注册的登录屏幕,但也显示“跳过登录”的选项。如果用户多次跳过登录,我正在执行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。
| 归档时间: |
|
| 查看次数: |
10685 次 |
| 最近记录: |