Firebase Auth:通过电子邮件或电话号码获取用户

时间:2017-12-24 13:29:54

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

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

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

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

我可以通过哪些方式获得所需的结果i-e在数据库中创建唯一的用户ID,以便用户可以互相添加为联系人?

5 个答案:

答案 0 :(得分: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);

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

Contact
    userid
       nameofContact1: name_here

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

我认为您使用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

                        }

                    }
                });

答案 3 :(得分:0)

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

即可

答案 4 :(得分:0)

如果有人在寻找如何获取 Auths 电话号码,这就是这样做的方法(空安全)

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