Я разрабатываю кроссплатформенное приложение с использованием 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;
})
Спасибо за любые предложения!