所以我知道我可以使用电子邮件验证或电话号码验证,但我想要做的是在用户注册或登录后进行电话号码验证。如何连接这两种身份验证方法。最后,Firebase中是否有一项功能可以检查用户是否通过电话号码进行验证?谢谢。
答案 0 :(得分:2)
即使用户经过身份验证,您仍然可以使用firebase提供的APi来验证该号码。根据{{3}},只有在用户收到确认码并生成PhoneAuthCredential
时才会进行身份验证。如果您只想对手机进行验证,只需对回调onVerificationCompleted
提供自定义反应即可。
通常你设置了提供者:
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phoneNumber,
60,
TimeUnit.SECONDS,
this,
mCallbacks);
您实施了一系列回调。
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential credential) {
//No need to authenticate again, just react to verified number
//signInWithPhoneAuthCredential(credential);
}
@Override
public void onVerificationFailed(FirebaseException e) {
if (e instanceof FirebaseAuthInvalidCredentialsException) {
} else if (e instanceof FirebaseTooManyRequestsException) {
}
}
@Override
public void onCodeSent(String verificationId,
PhoneAuthProvider.ForceResendingToken token) {
mVerificationId = verificationId;
mResendToken = token;
}
};
根据您关于验证用户登录方式的第二个问题,您可以查看此docs以了解如何检查firebase用户身份验证提供程序。
当用户登录时,您可以通过以下方式获取其电话号码(如果有):
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String number = user.getPhoneNumber();