Angular - ожидание завершения аутентификации Google

Я пытаюсь, чтобы аутентификация Google работала должным образом в Angular 4. Проблема заключается в том, что код не ожидает результатов из всплывающего окна авторизации Google, прежде чем продолжить выполнение.

Фактический вход в систему работает, он просто контролирует следующий шаг, который доставляет мне неприятности. Я попытался добавить метод "getLoginResult", который возвращает наблюдаемое, но это не помогло.

login() {
  this._authService.getLoginResult()
    .subscribe(results => {

     if(results === true) {
       // want to do something here
     }
     else {
       // this always gets executed b/c auth window hasn't returned
     }
  }
}

В authService...

getLoginResult(): Observable<boolean> {        
    if(this.signIn()) {
      return Observable.of(true);
    }
    else {
      return Observable.of(false);
    }
}

signIn() {
    const signOptions: gapi.auth2.SigninOptions = {scope: SCOPES };
    if (this._googleAuth) {
      Observable.fromPromise(this._googleAuth.signIn(signOptions))
        .subscribe((response: any) => this.handleSuccessLogin(response), error => this.handleFailedLogin(error));
    }
}

Я также попытался вернуть результат из входа.

signIn(): boolean {
    const signOptions: gapi.auth2.SigninOptions = {scope: SCOPES };
    if (this._googleAuth) {
      Observable.fromPromise(this._googleAuth.signIn(signOptions))
        .subscribe(response => {
        if(response === true) {
          return true;
        }
        else {
          return false;
        }
      });
    }
    else {
      return false;
    }
  }

0 ответов

Другие вопросы по тегам