在 otp 自动填充的 Firebase 身份验证中是否需要 SMS Retriever API?

Does SMS Retriever API is required in Firebase authentication for otp auto fill?

我正在使用 Firebase auth api 验证用户 phone 号码。目前就我而言,我有一个屏幕,用户可以在其中输入 phone 号码,而在第二个屏幕上可以输入 otp。根据文档 firebase 大部分时间自动检索 otp 并启动​​验证过程。 所以我的问题是它已经在 Firebase Auth SDK 中实现了这个 SMS Retriever API 或者我应该自己实现它来检索 SMS 并自动填充 OTP。

没有。我们不需要管理短信检索场景。

如果设备包含相同的 SIM 卡,它将由 PhoneAuthProvider.OnVerificationStateChangedCallbacksonVerificationCompleted(PhoneAuthCredential phoneAuthCredential) 方法中自动管理。

片段:

private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

        @Override
        public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
            Toast.makeText(FCMsmsTest.this, "onVerificationCompleted " + phoneAuthCredential.toString(), Toast.LENGTH_SHORT).show();
            signInWithPhoneAuthCredential(phoneAuthCredential);
        }

        @Override
        public void onVerificationFailed(FirebaseException e) {
            Toast.makeText(FCMsmsTest.this, "onVerificationFailed " + e.toString(), Toast.LENGTH_SHORT).show();

            if (e instanceof FirebaseAuthInvalidCredentialsException) {
                Toast.makeText(FCMsmsTest.this, "Invalid Request " + e.toString(), Toast.LENGTH_SHORT).show();
            } else if (e instanceof FirebaseTooManyRequestsException) {
                Toast.makeText(FCMsmsTest.this, "The SMS quota for the project has been exceeded " + e.toString(), Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCodeSent(String verificationId,
                               PhoneAuthProvider.ForceResendingToken token) {
            Toast.makeText(FCMsmsTest.this, "onCodeSent " + verificationId, Toast.LENGTH_SHORT).show();
            editText.setText("");

            mVerificationId = verificationId;
            PhoneAuthProvider.ForceResendingToken mResendToken = token;

            showDialog();
        }
    };