嘿,我试着检查用户插入的电话号码是否存在于我的firebase auth(LoginActivity)中,我试着这样做
String phoneNumber = "+1234567890";
mAuth.fetchSignInMethodsForEmail(phoneNumber)
.addOnCompleteListener(new OnCompleteListener<SignInMethodQueryResult>() {
@Override
public void onComplete(@NonNull Task<SignInMethodQueryResult> task) {
if (task.isSuccessful()) {
SignInMethodQueryResult result = task.getResult();
List<String> signInMethods = result.getSignInMethods();
if (signInMethods.contains("phone")) {
// Phone number is already in use in Firebase Auth
} else {
// Phone number is not in use in Firebase Auth
}
} else {
// An error occurred
}
}
});
当它到达这个函数时,调试器跳转到它,并且不做任何事情。addOnCompleteListener(new OnCompleteListener(){
我尝试与firebase的sdk管理,它也不工作,有人知道如何解决这个问题吗?
1条答案
按热度按时间hiz5n14c1#
有三种方法可以解决这个问题。两种方法是在客户端使用Java代码,另一种方法是使用Admin SDK。
当用户首次登录您的应用时,请使用如下所示的架构将用户数据保存在Firestore中:
要检查使用
+1234567890
的用户是否已经存在,您必须执行一个查询,在Java中如下所示:另一个更优雅、更简单的解决方案是使用Query #count()方法:
如果结果〉0,则表示用户已经存在,否则不存在。
最后一种解决方案是使用可从应用调用的Callable Cloud Function。由于我们在Cloud Functions中使用Admin SDK,因此您可以调用getUserByPhoneNumber()方法。代码如下所示:
使用这种方式,不需要在Firestore中保存用户数据,Admin SDK会直接查询FirebaseAuth服务。