Что происходит
У меня есть компонент, который отвечает неаутентифицированным пользователям, показывая им кнопку входа в 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?