我有一个名为“users”的集合和一个包含用户的文档,其中包含一些信息,例如电子邮件、姓名和电话
但是,当我尝试使用以下名称访问名称时:
FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser() ;
String Name = currentFirebaseUser.getDisplayName;
它返回一个空字符串。它适用于电子邮件,但不适用于姓名。
是否有另一种方法来获取不涉及“getDisplay”方法的名称?
答案 0 :(得分:1)
currentFirebaseUser.getDisplayName()
返回与该帐户关联的用户名,该用户名与您的 Firestore 数据库无关。
要从 firestore 数据库中获取数据,首先创建一个 POJO 类,例如。 User
public class User {
private String email, fName, phone;
public User(){
//Required for firestore
}
public User(String email, String fName, String phone) {
this.email = email;
this.fName = fName;
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getfName() {
return fName;
}
public void setfName(String fName) {
this.fName = fName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
我假设您必须使用 firebase 用户的 UID 作为文档名称。 从 Firestore 获取用户详细信息:
FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
FirebaseFirestore db = FirebaseFirestore.getInstance()
DocumentReference docRef = db.collection("users").document(currentFirebaseUser.getUid());
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
User user = documentSnapshot.toObject(User.class);
String fName = user.getfName();
String email = user.getEmail();
String phone = user.getPhone();
}
});