Angular 7 授权使用 Gmail



所有人都试图使用 Angular5-social-login 在 Angular 7 中授权 Gmail。无论如何它对我有用,但我需要在页面加载时运行该功能。我试图在ngOnInit中调用它并ngAfterViewInit出现以下错误:

捕获(在承诺中):类型错误:无法读取未定义的属性"登录" 类型错误: 无法读取未定义的属性"登录"

import { Component, OnInit, NgZone } from '@angular/core';
import { AuthService, SocialLoginModule } from 'angular5-social-login';
import { GoogleLoginProvider } from 'angular5-social-login'
import { User } from 'src/app/commen/user';
import { CookieService } from 'ngx-cookie-service';
import { HttpClient } from '@angular/common/http';
import { ApiService } from 'src/app/api.service';
import { Router } from '@angular/router'
import { AppComponent } from '../app.component';

@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
 export class LoginComponent {
 constructor(
  public SocialAuthService: AuthService,
  private cookie: CookieService,
  private http: HttpClient,
  private _ApiService: ApiService,
  private _user: User,
  private router: Router,
  private app: AppComponent,
 public zone: NgZone
  ) {

if (this.cookie.get('email') != '') {
  this.router.navigate(['home']);
  }
  }

    googlelogin() {
    let socialPlatformProvider = GoogleLoginProvider.PROVIDER_ID;
  this.SocialAuthService.signIn(socialPlatformProvider).then((userdata) => {
    if (userdata.email.includes('nagwa.com')) {
    this._ApiService.getRole(userdata.email).subscribe((res) => {

      this.cookie.set('email', userdata.email, 12)
      this.cookie.set('name', userdata.name, 12);
      if (res == "admin") {
        this.cookie.set('role', 'true', 12)
      }
      else this.cookie.set('role', 'false', 12)
      this.cookie.set('image', userdata.image, 12)
      this.router.navigate(['home'])
    }
    )


  }
  else alert("please check with nagwa account")

}).catch(function (err) {
  console.log(err)
});
    }
 ngOnInit() {


    }
    ngAfterViewInit()
     {
   this.googlelogin();
   }
   }

问题的临时解决方案

 ngAfterViewInit()
 {
   setTimeout (()=>{this.googlelogin()}, 1000);
 }

最新更新