检查用户是否在Android的Firebase Google身份validation中第一次被authentication

我正在Android应用程序中使用Firebase身份validation,并且正在使用Google帐户身份validation作为login应用程序的一个选项。

我如何知道用户是否第一次login应用程序?

任何帮助,非常感激。

Solutions Collecting From Web of "检查用户是否在Android的Firebase Google身份validation中第一次被authentication"

将Firebase身份validation与Firestore一起使用时的解决scheme

Firestore数据库的根目录结构如下所示 在这里输入图像说明

使用Firebase Auth currentUser.uid为每个用户创build一个根文档。 首先在第一次创build用户时,首先将一个名为registered_at的字段添加到根文档,然后根据您的使用情况将您的特定集合添加到根文档。

login或login时,可以检查具有registered_at字段的文档是否已经存在。 如果它还不存在,则可以将用户视为新用户(假设用户以后不能删除或更改registered_at字段)

 import com.google.firebase.auth.FirebaseAuth import com.google.firebase.firestore.DocumentReference import com.google.firebase.firestore.FirebaseFirestore fun rootDocument(): DocumentReference? = rootPath()?.let { return fireStore().document(it) } fun rootPath(): String? { val loggedInUser = loggedInUser() if (loggedInUser != null) { return "users/${loggedInUser.uid}" } return null } fun fireStore() = FirebaseFirestore.getInstance() fun createWriteBatch() = fireStore().batch() fun loggedInUser() = fireAuth().currentUser fun fireAuth(): FirebaseAuth = FirebaseAuth.getInstance() fun afterSignIn() { val rootDocument = rootDocument() ?: throw IllegalStateException("root document not found") rootDocument.get().addOnCompleteListener { val isNewUser = it.result.exists().not() if (isNewUser) { val batch = createWriteBatch() batch.set(rootDocument, HashMap<Any, Any>().apply { put("registered_at", System.currentTimeMillis()) }) batch.commit().addOnCompleteListener { println("this is a new user") } } else { println("this is not a new user") } } } 

这可能会帮助你,并尝试它:

正确的代码位置检查Firebase是否已创build用户?

虽然我完全同意,最正确的方法(鉴于无法添加新的字段到auth用户表)是为用户创build一个新的path,并在那里存储信息,我不想在login后发出额外的请求做这个检查(我使用Firestore和请求=金钱)。

我需要做这第一次login检查,以提示input一个用户名(因为显示名称是从Facebook /谷歌拉,我想给如果这是他们的第一次login覆盖的选项)。 我最终做的是使用photoURL属性作为标志来确定它是否是他们的第一次。 这是不理想的,但也许有人想要保存请求可以使用此作为解决方法。 对于Firebase来说这不是什么大不了的事情,但对于Firestore来说,您的计划成本更高

第一次用户注册时要求他重置密码。 您可以使用sendPasswordResetEmail方法将密码重置电子邮件发送给用户。链接: https ://firebase.google.com/docs/auth/android/manage-users

然后用户得到重置密码选项,并更改密码和新凭据login,如果用户给出错误的邮件编号,那么他不能login..