这个问题在这里已经有了答案:
How can I detect if user first time in Firebase [duplicate]
(4 个回答)
3年前关闭。
我在我的 android 应用程序中使用了带有电话号码的 firebase 身份验证。但是firebase并没有像电子邮件密码认证那样为登录和注册提供不同的功能。如何检查用户是否已经存在?
最佳答案
在这种情况下,您可以做的是,将每个注册用户的电话号码存储在 phone
中。 Firebase 数据库的节点。
然后,当从电话号码签署新用户时,您可以在电话节点中运行检查电话号码是否存在。
将电话号码存储在名为 phone
的节点中在您的数据库中,您可以使用如下代码:
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential){
mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
// you may be using a signIn with phone number like this, now here you can save the phone number in your database
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("phone");
ref.child(phoneNumber).setValue(phoneNumber);
}
else if(task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
Toast.makeText(MainActivity.this, "OTP is incorrect", Toast.LENGTH_SHORT).show();
}
}
});
}
在上面的代码中,
phoneNumber
是您要注册的用户数。我也使用了相同的标题名称和值,即 phoneNumber
本身。您可以根据需要使用名称或其他任何内容。现在,当您注册一个新用户时,您应该在您的
phone
中运行检查。数据库中的节点,使用以下代码。您可以在上面的代码中为这个新方法添加实例。boolean checkForPhoneNumber(String number){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.orderByChild("phone").equalTo(number).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
return true;
else
return false;
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
关于android - 如何检查电话号码是否已存在于 Firebase 身份验证中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676825/