Angular 6 со входом в Google: как перенаправить в случае успеха - PullRequest
0 голосов
/ 30 сентября 2018

Что происходит

У меня есть компонент, который отвечает неаутентифицированным пользователям, показывая им кнопку входа в Google.Когда пользователь входит в систему, токен доступа отправляется на мой сервер, и он проверяет его и возвращает jsonwebtoken.Я следовал собственной документации Google о том, как реализовать вход, и все это работает.

Проблема

Впервые я использовал знак Googleв, следовательно, я немного запутался и не уверен, как это должно быть настроено.В моем компоненте у меня есть следующий обработчик кликов, который вызывается из ngAfterViewInit():

...
    auth2.attachClickHandler(button, {},
      (googleUser) => {
        let accessToken = this.googleUser.getAuthResponse().id_token;

        this.authService.authenticate(accessToken).then(res => {
          if (res.token) {
            this.authService.setToken(res.token);

            // I want to redirect to /dashboard
            this.router.navigateByUrl('/dashboard');

          }
        })
        .catch(err => {
          ...
        })
      }
   ));
...

Но в случае успеха я хочу перенаправить, и Angular выдает мне предупреждение:

Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?

Как мне перенаправить, если я нахожусь в жизненном цикле ngAfterViewInit?

Дополнительные вопросы

Я хочу, чтобы пользователь мог выйти на другой странице.Но поскольку gapi.auth2 на этом этапе не определено, я должен инициализировать auth2 еще раз?Что значит запустить gapi.load('auth2', ...), чтобы получить authInstance и вызвать разъединение и так далее?

Кроме того, gapi.auth2 эквивалент Oauth2?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Используйте этот код

this.zone.run(() => {/* my code here */});
0 голосов
/ 02 октября 2018

Итак, я искал способы направления за пределы Angular, и, конечно, у вас есть window.location.href, который работает, но кажется грязным.Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать.

...