从firebase中检索我的电话号码

时间:2018-04-21 13:55:55

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

which method should i use to fetch the phone number of a user which they provided during authentication

在上面的链接中,实际上我得到了我想要的东西。实际上在我的数据库中,我也存储了@Courtney Miller(http://ibb.co/dhOCJx)最后评论中显示的数据。假设数据库中有多个条目使用电话号码作为密钥而不是链接中显示的一个条目。我如何找回自己的电话号码(我已登录)? 如果有多个条目使用电话号码作为其密钥,则上述链接中的解决方案将始终返回最后一个条目。

2 个答案:

答案 0 :(得分:1)

最好使用userid作为密钥而不是电话号码。但是,如果您想使用电话号码作为密钥,请将userid作为孩子添加到电话号码下,如下所示:

Users
  phonenumber
      name: Gaurav
      userid: id_here
      address: address_here

然后,要获取登录用户的信息,请尝试以下操作:

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
ref.orderByChild("userid").equalTo(userid).addValueEventListener(new ValueEventListener(){
  @Override
public void onDataChange(DataSnapshot dataSnapshot) {
 for(DataSnapshot datas: dataSnapshot.getChildren()){
    String phone=datas.getKey();
  }
} 

 @Override
public void onCancelled(FirebaseError firebaseError) {
   }
 });

String phone=datas.getKey();将检索此快照的来源位置,在这种情况下是电话号码。

答案 1 :(得分:0)

我也被这个问题困扰了3天,我试图检索当前用户的电话号码,并且得到空指针错误,所以我用google搜索了它,阅读了很多文章之后我知道我正在使用电话号码作为父节点而不是用户ID。 始终将父节点设置为用户ID,因为检索用户ID比电话号码更容易。

只需使用此

FirebaseAuth.getInstance().getCurrentUser().getUid()

代替此

 FirebaseAuth.getInstance().getCurrentUser().getPhoneNumber()