获取经过身份验证的用户失败的数据

时间:2018-04-02 16:50:26

标签: java android firebase firebase-realtime-database firebase-authentication

public void loadUserInformation() {

    final String uid = mAuth.getCurrentUser().getPhoneNumber();
    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Users");
//        DatabaseReference uidRef = rootRef.child("ref").child(uid);
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot postSnapshot: dataSnapshot.getChildren()){
                String name=postSnapshot.child("Name").getValue().toString();
//                    String email=postSnapshot.child("Email").getValue().toString();

                Name.setText(name);

//                    Email.setText(email);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Toast.makeText(getActivity(),"Error Loading UserDetails",Toast.LENGTH_LONG).show();
        }
    };
    rootRef.addListenerForSingleValueEvent(eventListener);
}

我知道为什么我没有得到预期的结果,因为在用户之后还有一个孩子。我不确定如何访问它,孩子(uid)给了我一个NullPointerException。目前的代码给了我一些随机用户的名字。我希望它返回经过身份验证的用户的名称,即我自己

数据库 - http://ibb.co/iRnF77

1 个答案:

答案 0 :(得分:0)

将电话号码更改为用户ID:

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();

所以你将拥有这个数据库:

Users
  userid
    Name: namehere
    Phone_Number: numberhere
    //etc

然后你可以简单地检索当前用户的数据:

 DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userid);

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
            String name=dataSnapshot.child("Name").getValue().toString();                     


            Name.setText(name);

        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
};

您不需要将电话号码作为父节点,因为您已将其作为属性Phone_Number: number_here使用,无需再写两次。

如果您进行了手机验证,也可以使用getPhoneNumber()

https://firebase.google.com/docs/auth/android/phone-auth