Google Войти с Ionic и конденсатор в Android. Браузер не перенаправляет на приложение - PullRequest
0 голосов
/ 13 октября 2019

Я создал приложение Google Sign-In, используя Ionic, и оно отлично работает, когда оно запускается как веб-приложение.

Однако при экспорте в виде проекта Android с использованием конденсатора он вызывает браузер телефона, чтобы активировать процесс входа в систему. Он закрывает процесс, но никогда не возвращается в приложение.

Я не могу найти решение, и помощь будет полезна. Код показан ниже.

export class GsinginComponent implements OnInit {

  private clientId:string = 'xxx.apps.googleusercontent.com';

  private scope = [
    'profile',
    'email',
    'https://www.googleapis.com/auth/plus.me',
    'https://www.googleapis.com/auth/contacts.readonly',
    'https://www.googleapis.com/auth/admin.directory.user.readonly'
  ].join(' ');

  public auth2: any;
  public async googleInit() {
    let that = this;
    gapi.load('auth2', function () {
      that.auth2 = gapi.auth2.init({
        client_id: 'xxx.apps.googleusercontent.com',
        cookiepolicy: 'single_host_origin',
        scope: that.scope
      });
      that.attachSignin(that.element.nativeElement.firstChild);
    });
  }

  public attachSignin(element) {
    let that = this;
    this.auth2.attachClickHandler(element, {},
      function (googleUser) {

        console.log(gapi.auth2.getAuthInstance());

        let profile = googleUser.getBasicProfile();
        var id_token = googleUser.getAuthResponse().id_token;

        console.log('Token || ' + id_token);
        console.log('ID: ' + profile.getId());
        console.log('Name: ' + profile.getName());
        console.log('Image URL: ' + profile.getImageUrl());
        console.log('Email: ' + profile.getEmail());

        //YOUR CODE HERE
       // localStorage.setItem('token', id_token )


        that._auth.registerGoogleUser(id_token, profile.getName(), profile.getEmail());

        //that.router.navigateByUrl('inicio');
        //that.router.navigate(['inicio']);
        that.navCtrl.navigateRoot('/inicio');


      }, function (error) {
        console.log(JSON.stringify(error, undefined, 2));
      });
  }





  constructor(private element: ElementRef, private router: Router, private _auth : AuthService, private navCtrl: NavController) {
    console.log('ElementRef: ', this.element);

  }

  ngOnInit() {
    this.googleInit();
  }

}

1 Ответ

0 голосов
/ 14 октября 2019

Вы должны использовать InAppBrowser для этой задачи.

запустить команды

ionic cordova plugin add cordova-plugin-inappbrowser
npm i @ionic-native/in-app-browser

Использование выглядит следующим образом,

import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';

constructor(private iab: InAppBrowser) { }


...


const browser = this.iab.create('https://ionicframework.com/');

browser.executeScript(...);

browser.insertCSS(...);
browser.on('loadstop').subscribe(event => {
   browser.insertCSS({ code: "body{color: red;" });
});

browser.close();

см. Документацию для того же.

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