import { Component, OnInit, ElementRef, AfterViewInit, VERSION, Injectable } from '@angular/core'; import { TokenService, TokenProvider } from '../../services/login/token.service'; import {Router} from '@angular/router'; declare const gapi: any; declare var $ :any; import '../../../assets/custom.js'; declare function simple_notifier(type: string, title: string, message:string): any; @Component({ selector: 'googgle-sign-in', templateUrl: './googgle-sign-in.component.html', styleUrls: ['./googgle-sign-in.component.css'] }) export class GooggleSignInComponent implements OnInit, Injectable { constructor(private element: ElementRef, private tokenService : TokenService, private router : Router) { } ngOnInit() { this.initiateExternalProviders(); } initiateExternalProviders(){ var clientId = '1010962018903-glegmqudqtl1lub0150vacopbu06lgsg.apps.googleusercontent.com'; var scope = [ 'profile', 'email' ].join(' '); if(gapi.auth2 == undefined){ gapi.load('auth2', () => { gapi.auth2.init({ client_id: clientId, cookiepolicy: 'single_host_origin', scope: scope }).then(()=>this.renderButton()); }); }else{ gapi.auth2.init({ client_id: clientId, cookiepolicy: 'single_host_origin', scope: scope }).then(()=>this.renderButton()); } } renderButton() { gapi.signin2.render('googleBtn'); var buttonElement = this.element.nativeElement.querySelector('#googleBtn'); if(buttonElement)this.attachSignin(buttonElement); } public attachSignin(element) { gapi.auth2.getAuthInstance().attachClickHandler(element, {}, (googleUser) => { //simple_notifier("success",null,"Successful login"); let profile = googleUser.getBasicProfile(); this.tokenService.login(googleUser.getAuthResponse().id_token, TokenProvider.google, profile.getName(), profile.getEmail()); }, function (error) { //simple_notifier("danger",null,"Failed to login"); console.log(JSON.stringify(error, undefined, 2)); } ); } }