首页 > 解决方案 > 我如何检索当前登录的用户数据,如联系人、电子邮件、姓名等

问题描述

这是我的代码,我没有得到预期的输出。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    String userKey = user.getUid();
    Log.d("UID : ",""+userKey);
    DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("users").child(userKey);
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Log.v("temp","temp"); //for debugging
            for(DataSnapshot ds : dataSnapshot.getChildren())
            {
                Log.v("Contact : ",""+ds.child("contact").getValue());
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

这是firebase数据库结构

标签: androidgoogle-cloud-firestorefirebase-authentication

解决方案


您正在向我们展示 Cloud Firestore schmea,但您正在使用从实时数据库获取数据的代码。要解决这个问题,您应该使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
DocumentReference uidRef = usersRef.document(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                String firstname = document.getString("firstname");
                String lastname = document.getString("lastname");
                String monthlybudget = document.getString("monthlybudget");
                String emailid = document.getString("emailID");
                String contact = document.getString("contact");
                Log.d(TAG, firstname + "/" + lastname + "/" + monthlybudget + "/" + emailid + "/" + contact);
            }
        }
    }
});

您的 logcat 中的结果将是:

Vicky/Gupta/2500/vicky@gmail.com/8879835947

推荐阅读