Есть ли обратный вызов проверки, когда код смс не извлекается автоматически? - PullRequest
0 голосов
/ 14 июля 2020
Future<void> verifyPhoneNumber({String phoneNumber,
                                Duration timeout,    
                                int forceResendingToken,
                                void Function(AuthCredential) verificationCompleted,
                                void Function(AuthException) verificationFailed,
                                void Function(String,[int]) codeSent,
                                void Function(String) codeAutoRetrievalTimeout})

... some stuff ...

[verificationCompleted] This callback must be implemented.
It will trigger when an SMS is auto-retrieved or the phone
number has been instantly verified. The callback will receive an
[AuthCredential] that can be passed to
[signInWithCredential] or [linkWithCredential].

... some other stuff ...

Читая это, я пришел к выводу, что verificationCompleted НЕ вызывается, когда sms-код НЕ извлекается автоматически. Пожалуйста, поправьте меня, если я ошибаюсь. Мне нужно реализовать обратный вызов завершения проверки, когда пользователь должен вручную ввести OTP. Как мне этого добиться? Я что-то здесь упустил?

1 Ответ

2 голосов
/ 14 июля 2020

Думаю, codeAutoRetrievalTimeout - это то, что вы ищете. Эта функция вызывается, когда firebase не может получить код автоматически.

Я предлагаю вам сделать следующее: реализовать метод codeAutoRetrievalTimeout следующим образом.

При вызове функции:

  1. Попросите пользователя вручную ввести otp.
  2. используйте phoneAuthProvider для проверки OTP и получения учетных данных:

AuthCredential _credential = PhoneAuthProvider.getCredential(
                            verificationId: widget.verificationId,
                            smsCode: otp);
_auth.signInWithCredential(_credential).then((value) {
    resolveUser(context, value.user);
}).catchError((e) {
    print(e);
});

...