如果我在 firebase 身份验证中有很多多余的匿名用户,可以吗?

Agu*_*ana 3 android anonymous kotlin firebase firebase-authentication

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

auth.signInAnonymously()
Run Code Online (Sandbox Code Playgroud)

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

auth.currentUser!!.linkWithCredential(credential)
Run Code Online (Sandbox Code Playgroud)

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

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

Ale*_*amo 6

然后假设他们卸载并重新安装该应用程序。因此他们将再次匿名登录,并且作为匿名用户将获得不同的 uid(假设新的 uid 是 aXXXX12345b )

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

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

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

此凭据已与不同的用户帐户关联。

仅当您使用不同的 Google 帐户时,才可以转换第二个匿名用户。

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

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

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

    db.collection("users").document(uid).delete().addOnCompleteListener(/* ... /*);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 也使用以下命令从 Firebase 身份验证中删除用户:

    firebaseUser.delete().addOnCompleteListener(/* ... /*);
    
    Run Code Online (Sandbox Code Playgroud)

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

像这样有多余的匿名身份验证用户可以吗?

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

  • [匿名帐户的限制为 1 亿](https://firebase.google.com/docs/auth/limits#accounts_per_project),但[不收取任何费用](/sf/ask/3091283681/ pricing-tier-mentions-firebase-authentication/44161502)为此。 (2认同)