cordova-plugin-firebase-authentication - verifyPhoneNumber (). then () не вызывается - PullRequest
0 голосов
/ 26 апреля 2020

Я разрабатываю кроссплатформенное приложение с использованием Ioni c 5 + Cordova. Я использую плагин cordova-plugin-firebase-authentication (https://github.com/chemerisuk/cordova-plugin-firebase-authentication) для выполнения аутентификации телефона, поскольку встроенный метод firebase требует использования ReCaptcha, который не работает на iOS.

Когда я пытаюсь проверить verifyPhoneNumber (телефон, тайм-аут), используя номер установленной SIM-карты, на Android, автоматическая проверка происходит, несмотря на то, что я поставил timeout = 0, я не получаю SMS и. then () не выполняется вообще, следовательно, в firebase.auth.signInWithCredential () нет идентификатора проверки для аутентификации пользователя для других функций firebase.

Когда я добавляю номер телефона РАЗЛИЧНОГО SIM-карты, отличной от установленной (у меня второй телефон с другим номером), я получаю SMS на второй телефон, и функция .then () выполняется, как и ожидалось!

Есть ли способ : (а) исправьте обработку тайм-аута = 0 и правильно получите SMS и вызовите функцию .then ()? или (b) получите ID проверки в onAuthStateChanged обработчик событий, чтобы мы могли аутентифицировать пользователя из кода, работающего на этом обработчике, вместо функции .then ()?

Пример кода:

this.firebaseAuthentication.onAuthStateChanged().subscribe((userinfo) => {
  if (userinfo) {
    // THIS BLOCK GETS EXECUTED AUTOMATICALLY AS SOON AS VERIFYPHONENUMBER() IS CALLED WHEN USING THE PHONE
    // NUMBER BEING USED IN THE DEVICE, AS ON ANDROID THE PHONE IS AUTO-VERIFIED
    // HOWEVER THE USER IS NOT PROPERLY AUTHENTICATED WHEN YOU USE A FIREBASE FUNCTION (E.G. RETRIEVE
    // DATA FROM REALTIME DATABASE
    console.log('User Info:', userinfo);   
  }
})

this.firebaseAuthentication.verifyPhoneNumber(this.phonenumber, 0).then(function(verificationId) {
  // THIS BLOCK NEVER GETS EXECUTED IF I USE THE PHONE NUMBER OF THE SAME DEVICE
  // IT *DOES* GET EXECUTED IF I TRY TO VERIFY A DIFFERENT PHONE NUMBER AS ON ANDROID IT AUTO-DETECTS THE PHONE NUMBER CURRENTLY IN THE DEVICE AND PERFORMS AUTO-VERIFICATION
  // HOWEVER, IN THE FIRST CASE, THE USER IS SIGNED-IN BUT IT IS NOT PROPERLY AUTHENTICATED WHEN TRYING
  // TO USE OTHER FIREBASE FUNCTIONS, E.G. RETRIEVE DATA FROM REALTIME DATABASE
  this.verificationId = verificationId;
})

Спасибо за любые предложения!

...