Firebase Phone Auth не отправляет SMS с кодом - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь настроить аутентификацию по номеру телефона с помощью Firebase для моего приложения для Android. Я включил аутентификацию телефона на вкладке «аутентификация» на консоли Firebase и добавил свой номер для тестирования. Я пробовал использовать несколько номеров, но я не получил ни одного SMS-сообщения, несмотря на то, что консоль сообщала мне, что функция PhoneCodeSent была запущена и отображает сообщение об успехе. Я пытался исправить это некоторое время и не могу найти надежного ответа. Что не так с моим кодом?

Мой код следующий

...
...
...
String verificationId;
int resendingToken;

Future<void> _sendConfirmationCode() async {
if (formKey.currentState.validate()) {
  formKey.currentState.save();

  final PhoneVerificationCompleted verificationCompleted = (FirebaseUser user) {
    setState(() {
      print('verification has been completed');
    });
  };

  final PhoneVerificationFailed verificationFailed = (AuthException authException) {
    setState(() {
      print(countrySelected);
      print(this.phone + "\n");
      print('verification failed error: ' + authException.message);}
    );
  };

  final PhoneCodeSent codeSent = (String verificationId, [int forceResendingToken]) async {
    this.verificationId = await verificationId;
    this.resendingToken = await forceResendingToken;
    print("code sent: "+ verificationId);
  };

  final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
      (String verificationId) {
    this.verificationId = verificationId;
    print("time out");
  };

  if (this.phone.isNotEmpty) {

    await FirebaseAuth.instance.verifyPhoneNumber(
      phoneNumber: "<PHONE NUMBER HARDCODED HERE>", //I've tried hardcoding my number too but it didn't work
      timeout: const Duration(seconds: 5),
      verificationCompleted: verificationCompleted,
      verificationFailed: verificationFailed,
      codeSent: codeSent,
      forceResendingToken: resendingToken,
      codeAutoRetrievalTimeout: codeAutoRetrievalTimeout);
  }
 }
}

На консоль выводится следующее:

I/flutter (32425): code sent: AM5PThC4JnFK7czWDoAdqSFjBdDk5oq9VwufNvWxgcOg4fEgbHE8CoYGuWMCjzTnfPbOlpcdfefouwL86dsD5fQs73CcR3NgvI2SRqHEHgM0n34yqqJma75ZCvPGMeTmwy6XDCA9-P0p
I/flutter (32425): time out

Я также пытался подождать несколько часов на случай, если достиг лимита SMS в Firebase, но это не проблема. Есть идеи?

1 Ответ

2 голосов
/ 02 апреля 2019

Когда вы добавляете номер телефона для тестирования, вы, в основном, вносите его в белый список.Белые номера телефонов используются для проверки подлинности номера телефона без отправки действительного SMS-сообщения.

Код подтверждения не отправляется. SMS-сообщение отправляется на номера телефонов из белого списка и OTP по умолчанию 123456 (если вы не указали 6-значный код подтверждения).для этого конкретного номера при добавлении в тестовую консоль).Попробуйте подтвердить с помощью этого кода, он будет аутентифицировать и сгенерировать действительный идентификатор подтверждения.

Для получения SMS удалите свой номер из белого списка и повторите попытку.

Ссылка: https://firebase.google.com/docs/auth/android/phone-auth#test-with-whitelisted-phone-numbers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...