我正在构建一个 Android 应用,我使用不同的方式让用户注册自己,如电子邮件/密码,电话,谷歌,Facebook,Twitter。我还希望用户能够将彼此添加为他们的联系人。
如果我只使用电子邮件和Google,那么实现这一点很容易,因为我可以将用户的电子邮件存储在数据库中,并使用它来识别不同的用户并在他们之间创建关系。
但现在,问题是用户也可以使用他们的电话号码进行注册,Facebook帐户也可以仅使用电话号码进行注册。因此,我不能仅将电子邮件用作用户的唯一ID。
我可以通过哪些方式获得所需的结果i-e在数据库中创建唯一的用户ID,以便用户可以互相添加为联系人?
答案 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);