我想知道我的应用用户会对他们使用匿名登录方法会发生什么。
Firebase文档真的很糟糕,并没有解释所有内容,并希望开发人员能够找到自己。 我在其旧版本文档中发现匿名会话将根据已在Login&中设置的到期时间到期。 Auth选项卡,但即使没有提到这意味着只是会话结束,或者意味着用户ID也会从我的应用用户列表中删除或者发生了什么?
我找到了this answer,但实在是不可接受。如果您使用Web应用程序并使所有事情变得困难,匿名用户的数量将会非常快速增长。 我甚至无法在仪表板中看到我的应用用户数量!!!!! 所以我该怎么做?我应该自己为我的数据开发一个仪表板,还是Firebase团队应该这样做?至少对于管理用户而言,我应该拥有的功能不仅仅是使用他们的电子邮件搜索用户,而且当您使用自定义登录时,您也无法做到这一点。
答案 0 :(得分:9)
匿名用户不会过期,目前还没有任何自动清除方法。
Firebase不会自动删除它们,因为它并不真正知道用户是否仍在存储链接到该登录的数据 - 只有应用创建者才会这样做。想象一下,如果你正在手机上玩益智游戏,并达到100级。那么当你明年去玩101级游戏时,所有进度都会丢失。 Firebase不能假定用户一年不活动意味着该帐户可以被移除。
但是有一些工具应该有所帮助。
1)Admin SDK& Firebase CLI列出用户。
2)Linking multiple auth providers
列出用户后,您可以检查每个用户是否还有其他提供商,并且最近没有使用过,没有存储数据,delete them。
但是,更好的方法是确保每个用户只创建一个帐户。如果您创建匿名帐户以帮助用户在登录前存储数据,您可能需要考虑提示他们链接身份验证提供程序(如Google或电子邮件)。如果您关联帐户,而不是创建新帐户,则可以避免活跃用户放弃帐户。通常,您还需要确保使用身份验证状态持久性,以确保不会创建超过必要的帐户。每位新访问者创建一个帐户,而不是每次有人反复访问您的网页时,这将极大地帮助您控制用户增长。
答案 1 :(得分:2)
在我的情况下,我在用户不知情的情况下使用匿名登录方法进行身份验证。 每次用户离开应用程序时,请通过-
删除匿名用户。componentDidMount = () => {
this.worker = new WebWorker(worker);
}
getInfo = () => {
this.worker.postMessage(this.state.query);
this.setState(prevState => ({
...prevState,
open: true
}), () => {
this.worker.addEventListener('message', (event) => {
const res = event.data;
this.setState({
results: res,
open: false
});
});
});
}
与此相关的匿名用户将不会堆积,并且会限制应用程序中匿名用户的数量
答案 2 :(得分:0)
如果您希望从用户列表中删除匿名用户,则必须编写一项服务来为您执行此操作。
由于firebase不提供列出注册用户的方法,因此您必须确保在数据库中存储某种用户列表。然后,您可以将node.js admin sdk用于get user data,检查是否user is anonymous,然后找到when the user was created。出于性能原因,您可能希望将此信息存储在数据库的特殊区域中,并立即将其全部检索。一旦您确定了陈旧的匿名用户,他们就可以easily deleted。