Я реализую Oauth2 и теперь у меня есть часть токена обновления. Когда срок действия моего токена доступа истекает, я должен обновить его (это Обещание), а затем повторить исходный запрос.
При моем текущем коде токен обновляется, но мой код никогда не вводит успех или ошибкуобратный вызов из моей подписки.
Мой код:
public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${this._sesionService.getAccessToken()}`
}
});
console.log(request.url);
return next.handle(request).catch(error => {
if (error instanceof HttpErrorResponse) {
if (error.status == 401) {
// refrescamos la sesión
return this.handle401Error(request.clone(), next);
} else {
return throwError(error);
}
}
return throwError(error);
});
}
private handle401Error(request: HttpRequest<any>, next: HttpHandler): Observable<any> {
return from(
this._sesionService
.getGoogleUser()
.reloadAuthResponse()
.then((auth: AuthResponse) => {
console.log('Token refrescado!');
this._sesionService.setAccessToken(auth.access_token);
})
).pipe(
switchMap(() => {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${this._sesionService.getAccessToken()}`
}
});
console.log('Test interceptor');
return next.handle(request);
})
);
}
Что мне здесь не хватает?
Я использую Angular 7 и rxjs 6