‘verificationCompleted != null’: неверно в аутентификации Flutter Firebase

#firebase #flutter #dart #firebase-authentication

#firebase #флаттер #dart #firebase-аутентификация

Вопрос:

Я использую FirebaseAuth для отправки OTP и проверки номера пользователя.Но столкнувшись с ‘verificationCompleted ! = null’, эта ошибка

Это мой код

  Future<void> registerUser(BuildContext context) async {
      await FirebaseAuth.instance.verifyPhoneNumber(
      phoneNumber: mobileNum,
      timeout: const Duration(seconds: 15),
      verificationCompleted: (AuthCredential authCredential) {
        setState(() {
          authStatus = "Your account is successfully verified";
        });
      },
      verificationFailed: (FirebaseAuthException e) {
        print(e);
      },
      codeSent: (String verId, [int forceCodeResent]) {
        var verificationId = verId;
        setState(() {
          authStatus = "OTP has been successfully send";
        });
      },
      codeAutoRetrievalTimeout: (String verId) {
        var verificationId = verId;
        setState(() {
          authStatus = "TIMEOUT";
        });
      },
    );
 }
  

С этой ошибкой я сталкиваюсь

 [VERBOSE-2:ui_dart_state.cc(166)] Unhandled Exception: 'package:firebase_auth/src/firebase_auth.dart': Failed assertion: line 639 pos 12: 'verificationCompleted != null': is not true.
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2      FirebaseAuth.verifyPhoneNumber (package:firebase_auth/src/firebase_auth.dart:639:12)
  

Комментарии:

1. проверьте это firebase.flutter.dev/docs/auth/phone

2. я использовал это, но та же ошибка

3. возможно, проблема в номере телефона. Имеет ли входной номер телефона правильный код страны и пробел между номерами?

Ответ №1:

не уверен в вашей проблеме, но в нем говорится: ERROR_SESSION_EXPIRED , Срок действия кода sms истек, а _auth.verifyPhoneNumber() продолжительность вашего тайм-аута довольно мала. попробуйте 60 секунд.

 await _auth.verifyPhoneNumber(
        phoneNumber: ' 91${_phoneNumberController.text}',
        timeout: Duration(seconds: 60),
        verificationCompleted: verificationCompleted,
        verificationFailed: verificationFailed,
        codeSent: codeSent,
        codeAutoRetrievalTimeout: codeAutoRetrievalTimeout);
  

также взгляните на документы.