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

问题描述 投票:1回答:1

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

auth.signInAnonymously()

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

auth.currentUser!!.linkWithCredential(credential)

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

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

android firebase kotlin firebase-authentication anonymous
1个回答
3
投票

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

是的,将为新的匿名用户生成一个新的UID。

即使他们再次使用Google登录,他们也将以q1q2q3登录

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

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

仅当您使用其他Google帐户时,您才能转换第二个匿名用户。

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

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

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

    db.collection("users").document(uid).delete().addOnCompleteListener(/* ... /*);
    
  2. 也使用以下方式将用户从Firebase身份验证中删除:

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

以这种方式,Firebase服务器上将什么也没有剩下。

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

不,这不行。这就是为什么您应尽可能清除数据的原因。

© www.soinside.com 2019 - 2024. All rights reserved.