【问题标题】:How to check if an email exists in Firebase Authentication?如何检查 Firebase 身份验证中是否存在电子邮件?
【发布时间】:2023-01-23 18:28:10
【问题描述】:
我正在尝试检查 Firebase 身份验证中是否已存在电子邮件,但我可以找到适用于 Java 的内容。
我正在尝试执行类似搜索电子邮件列表的操作,如果该电子邮件不在数据库中 (emailNotExistsInDatabase(email)),则继续。
【问题讨论】:
标签:
java
firebase
google-cloud-platform
google-cloud-firestore
firebase-authentication
【解决方案1】:
FirebaseAuth 类中没有方法可以帮助您根据电子邮件地址检查用户是否存在。如果您需要该功能,则必须自己创建。这意味着当用户首次登录您的应用程序时,使用如下所示的模式将用户数据保存在Firestore 中:
db
|
--- users (collection)
|
--- $uid (document)
|
--- email: "user-email@gmail.com"
要检查具有 user-email@gmail.com 的用户是否已经存在,那么您必须在 Java 中执行如下所示的查询:
FirebaseFirestore db = FirebaseFirestore.getInstance();
Query queryByEmail = db.collection("users").whereEqualTo("email", "user-email@gmail.com");
queryByEmail.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
if (document.exists()) {
Log.d(TAG, "User already exists.");
} else {
Log.d(TAG, "User doesn't exist.");
}
}
} else {
Log.d(TAG, task.getException().getMessage()); //Never ignore potential errors!
}
}
});
另一种解决方案是使用Query#count() 方法:
queryByEmail.count();
如果结果 > 0 则表示该用户已经存在,否则不存在。