【问题标题】: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 则表示该用户已经存在,否则不存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 2023-03-18
      • 2018-02-10
      • 2021-05-16
      • 1970-01-01
      • 2021-11-21
      相关资源
      最近更新 更多