#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);
также взгляните на документы.