我正在从出席者集合中获取其userUID后检索当前用户的电子邮件

时间:2018-08-23 14:42:02

标签: android firebase firebase-authentication google-cloud-firestore

我知道通常是通过检查谁登录并使用此代码来完成的。

FirebaseUser user = mAuth.getCurrentUser();
    if (user != null){
        username.setText("Welcome " +user.getEmail());
    }

但是在下面的代码中,我正在从Cloud Firestore的出勤集合中检索userUID,并希望使用它来获取与该userUID相关联的电子邮件。

这是我的代码:

   public void viewAttendance(View v) {
    attendanceRef2.orderBy("sessionID", Query.Direction.ASCENDING)
            .get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            String data = "";

            for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                Attendance attendance = documentSnapshot.toObject(Attendance.class);

                String sessionID = attendance.getSessionID();
                String attendanceUID = attendance.getUserUID();



                data+= "Session ID: " +sessionID+ "\n" + "Student: " +attendanceUID+ "\n\n";
                textViewData.setText(data);
            }

        }
    });
}

1 个答案:

答案 0 :(得分:0)

因此,您要说的是,您想从与会者的ID(即userId)中检索电子邮件地址。

如果是,

您无法从Firebase身份验证中检索所有经过身份验证的用户的数据,但是只能获取当前用户的数据。

要获取所有用户的数据,您需要使用Admin SDK

这是一个例子:

UserRecord userRecord = FirebaseAuth.getInstance().getUser(uid);
// See the UserRecord reference doc for the contents of userRecord.
System.out.println("Successfully fetched user data: " + userRecord.getUid());

您的情况是:

UserRecord userRecord = FirebaseAuth.getInstance().getUser(attendanceUID);
String email = userRecord.getEmail();

或者您可以使用列表存储它们。