如果我在 firebase 身份验证中有很多冗余匿名用户,可以吗? [关闭]

Posted

技术标签:

【中文标题】如果我在 firebase 身份验证中有很多冗余匿名用户,可以吗? [关闭]【英文标题】:is it okay if I have a lot of redundant anonymous users in firebase authentication? [closed] 【发布时间】:2020-09-11 02:10:03 【问题描述】:

我想让新用户在决定使用 Gmail、Facebook 或电子邮件和密码登录之前,可以在我的应用中看到一些内容。所以首先我需要让他们在使用此代码安装应用程序时匿名登录

auth.signInAnonymously()

然后,在他们玩弄之后,他们决定使用 Google 帐户登录,我使用此代码将该具有特定 UID(假设 UID 为 q1q2q3)的用户转换为使用 Google 作为身份验证提供程序。

auth.currentUser!!.linkWithCredential(credential)

然后说,他们卸载并重新安装应用程序。所以他们将再次匿名登录,他们将作为匿名用户获得不同的 UID(假设新的 UID 是 aXXXX12345b ),即使他们再次使用 Google 登录,他们也会以 q1q2q3 的身份登录

所以现在我有一个多余的匿名用户 (aXXXX12345b)。有这样的冗余匿名身份验证用户可以吗?我的意思是,我担心我会从 firebase 身份验证中遇到一些限制。我该怎么办 ?对于这种情况有更好的方法吗?我不知道这是否是一种常见的做法

【问题讨论】:

【参考方案1】:

然后说,他们卸载并重新安装应用程序。所以他们将再次匿名登录,他们将获得与匿名用户不同的 uid(假设新的 uid 是 aXXXX12345b)

没错,为新的匿名用户生成了一个新的 UID。

即使他们再次使用 google 登录,他们也会以 q1q2q3 登录

此时,您的数据库中有两个用户。第一个是匿名用户,使用谷歌帐户转换为真实用户,第二个是尚未转换的匿名用户。但是,如果您想将第二个用户转换为使用与以前完全相同的帐户的真实用户,这是不可能的,因为该帐户已经存在,因此将抛出带有以下消息的异常:

此凭据已与其他用户帐户相关联。

只有在您使用不同的 Google 帐户时,您才能转换第二个匿名用户。

所以现在我有一个多余的匿名用户 (aXXXX12345b)

不,你没有。你有一个真实账户和一个匿名账户。仅当用户决定卸载应用程序时,第二个才可能是多余的。如果您担心 Firebase 限制,请为匿名用户提供注销的可能性。当用户点击注销按钮时,您需要做两件事:

    如果您将匿名用户的数据存储在数据库、Cloud Firestore 或 Firebase 实时数据库以及 Firebase 存储中,请将其删除。

    db.collection("users").document(uid).delete().addOnCompleteListener(/* ... /*);
    

    也使用以下方法从 Firebase 身份验证中删除用户:

    firebaseUser.delete().addOnCompleteListener(/* ... /*);
    

这样一来,Firebase 服务器上就不会剩下任何东西了。

这样有多余的匿名认证用户可以吗?

不,这不好。这就是为什么你应该尽可能地清理数据。

【讨论】:

好吧,如果用户卸载应用程序,匿名用户可能是多余的,所以会有很多匿名用户。我的问题是,这有什么限制或额外费用吗?我的意思是,也许身份验证的用户数量是有限的,例如每月不超过 100000?我试图找到但我找不到它。以防我遗漏了什么。我知道 Firestore 有限制,但我找不到 Firebase 身份验证 有一个100 million limit for anonymous accounts 但no fees 。

以上是关于如果我在 firebase 身份验证中有很多冗余匿名用户,可以吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 身份验证 - 防止访问未知用户

Firebase 身份验证和谷歌云翻译

如果用户已经无密码登录,firebase 可以设置密码身份验证吗?

Firebase:如果身份验证正确,如何转发到新网页?

可以在firebase中的ios和android项目之间共享用户进行身份验证

Flutter 路由与 Firebase 身份验证相结合