【问题标题】:Firebase Auth: Get users by email or phone numberFirebase Auth:通过电子邮件或电话号码获取用户
【发布时间】:2017-12-24 13:29:54
【问题描述】:

我正在构建一个 Android 应用程序,我在其中使用不同的方式让用户注册自己,例如电子邮件/密码、电话、谷歌、Facebook、Twitter。我还希望用户能够将彼此添加为他们的联系人。

如果我只使用电子邮件和谷歌,那么实现这一点很容易,因为我可以将用户的电子邮件存储在数据库中,并使用它来识别不同的用户并在他们之间创建关系。

但是现在,问题是用户也可以使用他们的电话号码进行注册,而 Facebook 帐户也可以仅使用电话号码进行注册。所以,我不能只使用电子邮件作为用户的唯一 ID。

有哪些方法可以达到预期的效果,即在数据库中创建唯一的用户 ID,以便用户可以将彼此添加为联系人?

【问题讨论】:

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


    【解决方案1】:

    您可以像这样获取用户的电子邮件或电话号码:

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    String phoneNumber = user.getPhoneNumber();
    String email = user.getEmail();
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
      

      上面会得到当前登录的用户。

      然后你可以在数据库中设置他的userid,这样做:

      DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users").child(user.getUid());
      ref.child("phonenumber").setValue(number);
      

      你会拥有这个数据库:

      Users
        userid
          name: name_here
          phonenumber: number_here
          address: address_here
      

      对于联系人只需这样做:

      DatabaseReference dbRef;
      DatabaseReference cont=FirebaseDatabase.getInstance().getReference().child("Contact");
      dbRef= cont.child(user.getUid());
      dbRef=cont.child("name").setValue(name);
      

      因此,在“联系人”节点中,您将拥有 userid,其中包含该用户已添加到列表中的联系人的姓名。

      Contact
          userid
             nameofContact1: name_here
      

      【讨论】:

      • 谢谢。只是快速跟进。假设用户想要将 2 个人添加到他的联系人中,一个给他他的电子邮件,另一个给他他的电话号码。我是否必须搜索所有用户并查看他们是否有该电子邮件或电话号码?还是有更好的办法?
      • 搜索以检查他们是否有该电子邮件,您可以这样做orderbyChild("email").equalTo(useremail).addListenerForSingleValueEvent(){...}
      【解决方案3】:

      我认为您正在使用 firebase 进行身份验证,因为您在问题中标记了 firebase。 Firebase 身份验证通常会在身份验证期间获取用户名,因此您可以在注册期间获取这些详细信息,将它们添加到您的数据库中并为每个用户分配一个唯一的 ID。然后,您可以为系统上的每个用户创建一个好友节点,用于存储他们的好友 ID。注册/登录的示例如下所示:

      FirebaseAuth mAuth = FirebaseAuth.getInstance();
      mAuth.signInWithCredential(credential)
                      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                          @Override
                          public void onComplete(@NonNull Task<AuthResult> task) {
                              if (task.isSuccessful()) {
                                  // Sign in success, get available information
      
                                  final FirebaseUser user = mAuth.getCurrentUser();
                                  if (user != null) {
                                      if (user.getEmail() != null) {
                                          //since various methods are available, you may want to use names
                                          String name = user.getDisplayName();
                                          //if email exists, you can try this
                                          user.getEmail();
                                          //otherwise, this is sure to exist but you may want to tell your users 
                                          //to complete their profiles later
                                          user.getUid()
                                      }
                                  } else {
                                      //Notify user
                                  }
                              } else {
                                  //The whole process failed
      
                              }
      
                          }
                      });
      

      【讨论】:

        【解决方案4】:

        您可以使用 Firebase UID。只需拨打FirebaseAuth.getInstance().getUid();

        【讨论】:

        • 这只会获取 uid,而不是 uid 的标识符(PhoneNumber 或 EmailId)。
        【解决方案5】:

        如果有人在寻找如何获取 Auths 电话号码,请按以下步骤操作(Null Safe)

        var user = FirebaseAuth.instance.currentUser;
        String pn = user!.phoneNumber.toString();
        print("user_phone_number " + pn);
        

        【讨论】:

          猜你喜欢
          • 2019-10-20
          • 1970-01-01
          • 2017-04-06
          • 1970-01-01
          • 2018-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多