Ионная система проверки подлинности

Я создаю систему аутентификации по номеру сотового телефона в ионной 2, потому что я использую руководство Google

Во-первых, я считаю, firebase.auth.RecaptchaVerifier (является одним из необходимых параметров)

 this.autVer = new firebase.auth.RecaptchaVerifier('contCatcha', { 'size': 'invisible', 'callback': function (response) { // reCAPTCHA solved, allow signInWithPhoneNumber. } }); 

и laster использовать auth.signInWithPhoneNumber угловой огонь

 this.afAuth.auth.signInWithPhoneNumber("+57" + this.numeroCelular, this.autVer).then(verificationId => { console.log("SMS Enviado"); this.confor = verificationId; this.loading.dismiss(); this.estado = 1; this.esperarCodigo(); }) 

Где второй параметр – firebase.auth.RecaptchaVerifier, созданный

В браузере моего компьютера все работает нормально, но на мобильном устройстве появляется следующее сообщение об ошибке:

Мне нужно заменить этот firebase.auth.RecaptchaVerifier , но я не знаю, есть ли какой-либо подключаемый модуль или субметр, и что все работает. Я очень ценю ваш совет.

К сожалению, аутентификация телефона с использованием библиотеки Firebase JS не будет работать в среде Cordova / Ionic, поскольку reCAPTCHA не сможет проверить происхождение вашего приложения. Это связано с тем, что источник будет выглядеть как файл: //assets/index.html.

То, что вы можете сделать, чтобы заставить его работать, следующее: Firebase Phone auth для Интернета зависит от интерфейса верификатора приложения: https://firebase.google.com/docs/reference/js/firebase.auth.ApplicationVerifier, который реализует RecaptchaVerifier. Он определяет свойство «тип», которое должно быть равно «recaptcha». Он определяет метод verify (): Promise, который разрешается с помощью маркера reCAPTCHA.

Что вы можете сделать, так это вам нужно открыть веб-сайт, отобразить reCAPTCHA, получить токен reCAPTCHA, а затем передать его обратно в свое приложение, где вы будете использовать свой собственный firebase.auth.ApplicationVerifier

Наиболее безопасный способ сделать это:

  1. Откройте хромированную пользовательскую вкладку или SFSafariViewController (не используйте встроенные веб-просмотры) и перенаправляйтесь на свой собственный веб-сайт и белили в консоли Firebase, где будет отображаться firebase.auth.RecaptchaVerifier. Для этого вы можете использовать cordova-plugin-browsertab.

  2. Затем вы передаете токен reCAPTCHA обратно в свое приложение с помощью FDL (Firebase Dynamic Links) и добавьте его в глубокую ссылку. Это гарантирует, что только ваше приложение сможет его открыть. Вам нужно будет настроить Firebase Dynamic Links, чтобы заставить их работать правильно.

  3. Вам необходимо прослушать входящие ссылки в мобильном приложении. Вы можете использовать плагин cordova-universal-links-plugin.

  4. Разберите токен reCAPTCHA из глубокой ссылки. Переустановите его в реализации firebase.auth.ApplicationVerifier. Теперь вы можете передать его в signInWithPhoneNumber для завершения входа.

Это потребует некоторой работы, но необходимо для минимизации риска фишинговых атак и злоупотреблений.

Прежде всего, Cordova / Ionic использует протокол file: ///, так что Recaptcha не будет работать в вашем приложении (только в браузере, так как это http). Библиотека Firebase / Recaptcha проверяет наличие location.protocol и ожидает http / https, но это не относится к Cordova, как упоминалось. Возможным обходным решением будет локальный сервер, работающий на вашем телефоне. например, cordova-httpd или cordova-plugins # local-webserver (или в HTTP-браузере в приложении). После этого вы можете реализовать невидимую капчу (как описано в документах firebase). Но все же, иногда пользователь получает всплывающее окно, чтобы решить капчу, поэтому он не идеален.

Так как нет смысла иметь captcha на мобильной среде (в большинстве случаев, по крайней мере), я начал работать над собственной реализацией аутентификации телефона Firebase для Cordova / Ionic. Я начал с версии iOS.

Может ли кто-нибудь поддержать меня, чтобы реализовать версию java / android?

https://github.com/guyromb/cordova-firebase-phoneauth

Если вы не хотите использовать динамические / глубокие ссылки, предложенные bojeil, вы можете попробовать следующее:

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

Чтобы это сработало, будьте осторожны с безопасностью, которая может быть довольно сложной.

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

Возможно, вам нужны плагины cordova:

  • InAppBrowser
  • BackgroundMode
  • разрешение
  • Плагин SMS-приемника Cordova
  • PANIC: Разбитый путь системы AVD. Проверьте значение ANDROID_SDK_ROOT
  • Не удается принять лицензионное соглашение Android SDK Platform 24
  • Требования к кордове Android не удалось: «Не удалось найти установленную версию Gradle»
  • Запрос AJAX с телефона Android
  • Как добавить значок приложения в проекты телефонных звонков?
  • Кордова build: Пожалуйста, установите цель Android: «android-22». Я не хочу андроида-22. Я хочу андроид-19 - что мне делать?
  • Ошибка выполнения команды 'ant' в Mac OS X 10.9 Mavericks при создании Android с помощью PhoneGap / Cordova
  • Насколько постоянным является локальное хранилище на Android и iOS?
  • Мобильная сеть: как получить размер физического пикселя?
  • Ошибка: отклонение белого списка в Phonegap
  • Интерфейс пользовательского интерфейса iOS 7
  • Давайте будем гением компьютера.