我正在实现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