Обойти аутентификацию Firebase от Ionic / Cordova до AngularFire2 / Firebase Web SDK - PullRequest
0 голосов
/ 08 октября 2019

есть ли способ синхронизировать версию Firebase Cordova с Firebase SDK для Web (или AngularFire2)?

О проблеме: я работаю над приложением Ionic, которое аутентифицируется с помощью Firebase. Я использую PhoneAuth в качестве своего провайдера входа. К сожалению, есть проблемы с reCAPTCHA в веб-версии Firebase, потому что он может обрабатывать reCAPTCHA только через HTTP / HTTPS, а Ionic / Cordova строит все через FILE: //. Теперь есть плагин Ionic / Cordova, который позволяет этот процесс, но он не передает экземпляр в Firebase Web-SDK или AngularFire2.

Я использую этот плагин cordova: https://ionicframework.com/docs/native/firebase-authentication

и попробовал этот урок: https://www.youtube.com/watch?v=R906OGFurJg

  import {Injectable} from '@angular/core';
  import {FirebaseAuthentication} from '@ionic-native/firebase-authentication/ngx';
  import {Router} from '@angular/router';
  import * as firebase from "firebase/app";


  export class FirebaseAuthService {


      firebaseAuthentication: FirebaseAuthentication;
      verificationID = "";


      constructor(firebaseAuthentication: FirebaseAuthentication, private router: Router) {
          this.firebaseAuthentication = firebaseAuthentication;

      }

      async phoneAuth() {

          await this.firebaseAuthentication.verifyPhoneNumber("+491515555555", 120000).then((verificationID) => {
              this.verificationID = verificationID;
              console.log("WelcomeScreen VerificationID: ", this.verificationID);


          }).catch((error) => {
              console.log(error);
          });

      }

      async subscribeFirebase() {
          await this.firebaseAuthentication.onAuthStateChanged().subscribe(async (user) => {
              if (user) {
                  let token = "";

                  await this.firebaseAuthentication.getIdToken(false).then(value => {
                      token = value;
                  }).catch(e => {
                      console.log(e);
                  });

                  //This doesn't work.
                  await firebase.auth().signInWithCustomToken(token).catch(function (error) {

                      console.log(error.code, error.message)

                  });

                  //let user = firebase.auth().currentUser;
                  //user.reauthenticateWithCredential(token).then();

                  this.router.navigate(['menu']).then();


              } else {
                  console.log("AuthService: ", "User not logged in");

              }
          })
      }
  }

Поэтому я хотел бы знать, можно ли переслать экземпляр (с помощью токена или учетных данных). Путь через собственный плагин через разработку под iOS или Android также будет приемлемым.

...