[英]To get data of authenticated user failure
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);
}
我知道为什么我没有得到预期的结果,因为在用户之后还有一个孩子。 我不确定如何访问它,child(uid)给了我NullPointerException
。 目前的代码给了我一些随机用户的名字。 我希望它返回经过身份验证的用户的名称,即我自己
将电话号码更改为用户标识:
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
,因此无需Phone_Number: number_here
编写两次。
如果您进行了电话身份验证,也可以使用getPhoneNumber()
:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.