我正在开发一个 Android 应用程序,我只想在其中验证手机号码而不创建用户帐户。可能吗?我正在使用以下代码
private void startPhoneNumberVerification(String phoneNumber) {
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phoneNumber, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
this, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallbacks
}
private void verifyPhoneNumberWithCode(String verificationId, String code) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
signInWithPhoneAuthCredential(credential); // this function is creating user account , if not present. But We Don't want this
}
如果用户帐户不存在,以下函数将创建用户帐户,但我不想创建帐户,我只想验证用户输入的代码。是否有任何回调方法可用?
private void signInWithPhoneAuthCredential(final PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
dialog.dismiss();
FirebaseUser user = task.getResult().getUser();
Toast.makeText(LoginActivity.this, "Success " + user.getEmail(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(LoginActivity.this, "Failed ", Toast.LENGTH_SHORT).show();
verifyPhoneNumberWithCode(mVerificationId, editText.getText().toString().trim());
}
}
});
}
最佳答案
在此过程中,如果不将电话提供商与 Firebase 用户相关联,您就无法验证用户键入的内容。
但是您可以在不久之后通过调用以下方式取消手机与用户帐户的关联:
FirebaseAuth.getInstance().getCurrentUser().
unlink(PhoneAuthProvider.PROVIDER_ID)
.addOnCompleteListener(this, onCompleteListener);
验证用户是否有权访问此电话号码但不应使用它登录有很多用途。我真的认为 Firebase 应该让开发者先验证,然后使用凭据登录。
还有:
Google Play 服务很可能会自动验证。当 PhoneAuthProvider.OnVerificationStateChangedCallbacks 中的 onVerificationCompleted(PhoneAuthCredential) 被调用时。这样用户就不需要输入验证码,手机也不会自动绑定(bind)。
关于android - Firebase phone Auth for Android,我们可以在不创建用户帐户的情况下只验证电话号码吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44497305/