Невозможно сгенерировать OTP для устройств Android версии> 9 - PullRequest
0 голосов
/ 24 сентября 2019

Я разрабатываю ionic app(v-4). Мое приложение должно проверять пользователей по номеру телефона, поэтому я добавил firebase в мое приложение.Ниже приведены шаги, которые я сделал:

  • Зарегистрировал приложение для Android в firebase, указав android package name и SHA - 1 key в базе данных.
  • Скачал и добавил google-services.json файл в папке root приложения.
  • Включение для телефона authentication в firebase.
  • Затем установлены необходимые плагины:

    npm установить firebase @ angular / fire --save

    плагин ionic cordova добавить аутентификацию cordova-plugin-firebase-

    npminstall @ ionic-native / firebase-authentication

  • Затем добавили необходимые файлы в файл environment.ts, например:

    firebase: {
    apiKey: 'AIz..........',
    authDomain: '............',
    databaseURL: '...........',
    projectId: '...........',
    storageBucket: '.........',
    messagingSenderId: '..........'
    }
    
  • Добавлены необходимые imports и providers в app.module.ts файле:

     import { NgModule } from '@angular/core';
     import { BrowserModule } from '@angular/platform-browser';
     import { RouteReuseStrategy } from '@angular/router';
    
     import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
     import { SplashScreen } from '@ionic-native/splash-screen/ngx';
     import { StatusBar } from '@ionic-native/status-bar/ngx';
    
     import { AppComponent } from './app.component';
     import { AppRoutingModule } from './app-routing.module';
     import { FirebaseAuthentication } from '@ionic-native/firebase-authentication/ngx';
     import { AngularFireModule } from '@angular/fire';
     import { environment } from '../environments/environment';
     @NgModule({
       declarations: [AppComponent],
       imports: [
        BrowserModule,
        IonicModule.forRoot(),
        AppRoutingModule,
        AngularFireModule.initializeApp(environment.firebase, 'app-name'),
       ],
    providers: [
      StatusBar,
      SplashScreen,
      FirebaseAuthentication,
      {provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
     ],
     bootstrap: [AppComponent]
    })
    

    класс экспорта AppModule {}

  • Затем в login page iЯ создаю и проверяю OTP следующим образом:

HTML

<ion-content padding>
  <ion-item>
    <ion-label position="floating">Phone</ion-label>
    <ion-input type="text" [(ngModel)]="phone"></ion-input>
  </ion-item>
  <ion-button expand="full" (click)="send()">Send</ion-button>
  <ion-item>
      <ion-label position="floating">Enter OTP</ion-label>
      <ion-input type="text" [(ngModel)]="code"></ion-input>
    </ion-item>
  <ion-button expand="full" (click)="verify()">Verify</ion-button>
</ion-content>

TS

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import {
  NavController,
  AlertController,
  LoadingController,
  Platform
} from '@ionic/angular';
import { FirebaseAuthentication } from '@ionic-native/firebase-authentication/ngx';
import * as firebase from 'firebase';


@Component({
  selector: 'app-login',
  templateUrl: './login.page.html',
  styleUrls: ['./login.page.scss'],
})
export class LoginPage implements OnInit {
  verificationId: any;
  code = '';
  phone: number;

  constructor(public navCtrl: NavController) { }

  ngOnInit() {}

  send() {
    const tell = '+91' + this.phone;
    (window as any).FirebasePlugin.verifyPhoneNumber(tell, 60, (credential) => {
      console.log(credential);
      this.verificationId = credential.verificationId;
    }, (error) => {
      console.error(error);
      alert(error);
     });
  }

  verify() {
    const signInCredential = firebase.auth.PhoneAuthProvider.credential(this.verificationId, this.code);
    firebase.auth().signInWithCredential(signInCredential).then((info) => {
      console.log(info);
      this.navCtrl.navigateRoot('/home');
    }, (error) => {
      console.log(error);
    });
    }
}

Теперь все отлично работает на Androidустройства (до версии 9), но он не генерирует OTP для устройств 9 или выше 9.

Исправьте меня, если что-то не так с code/plugins.При необходимости я POST необходимые файлы.

...