Как я могу поймать ошибку при вводе неправильного кода SMS в Flutter?

#android #ios #firebase #flutter #firebase-authentication

#Android #iOS #firebase #flutter #firebase-аутентификация

Вопрос:

Я использую телефонную аутентификацию на платформе Firebase. На самом деле я решил эту проблему с помощью приведенного ниже кода, но Firebase выдала мне еще одну ошибку, похожую позже.

Я пытаюсь выбрать 2 варианта; один из них использует catch (e), другой использует FirebaseAuthException catch (me), но я всегда получаю одну и ту же ошибку.

   signin() async {
    final AuthCredential credential = PhoneAuthProvider.credential(
        verificationId: verificationId, smsCode: code);
    try {
      await FirebaseAuth.instance.signInWithCredential(credential);
      print("successful");
    } catch (e) {
      print("not successful");
    }    
  }
  

Произошло исключение.
Исключение PlatformException (Исключение PlatformException(invalid-verification-code, код подтверждения SMS, используемый для создания учетных данных авторизации телефона, недействителен. Пожалуйста, повторно отправьте SMS с кодом подтверждения и обязательно используйте код подтверждения, предоставленный пользователем., {code: invalid-verification-code, сообщение: код подтверждения SMS, используемый для создания учетных данных авторизации телефона, недействителен. Пожалуйста, повторно отправьте SMS с кодом подтверждения и обязательно используйте код подтверждения, предоставленный пользователем., nativeErrorMessage: код подтверждения SMS, используемый для создания учетных данных для авторизации по телефону, недействителен. Пожалуйста, повторно отправьте SMS с кодом подтверждения и обязательно используйте код подтверждения, предоставленный пользователем., nativeErrorCode: 17044, additionalData: {}}))

Ответ №1:

вы можете отфильтровать ошибку по FirebaseAuthException коду;

 signin() async {
  final AuthCredential credential = PhoneAuthProvider.credential(
    verificationId: verificationId,
    smsCode: code,
  );
  try {
    await FirebaseAuth.instance.signInWithCredential(credential);
    print("successful");
  } on FirebaseAuthException catch (e) {
    if (e.code == 'invalid-verification-code') {
      onWrongCode();
    }
    onOtherError(e);
  } catch (e) {
    onOtherError(e);
  }
}