我需要将Firebase令牌从我的authService获取到我的angular 5项目的拦截器:当用户首次通过身份验证时,我可以毫无问题地获取令牌ID,但是一旦刷新页面(调用API)我收到此错误消息:
无法读取null的属性“ getIdToken”
在AuthService.push ../ src / app / core / auth.service.ts.AuthService.getUserIdToken(auth.service.ts:144)
在TokenInterceptor.push ../ src / app / core / token.interceptor.ts.TokenInterceptor.intercept(token.interceptor.ts:31)
我在authService中的函数getToken:
getUserIdToken(): Observable<string> {
return fromPromise ( this.afAuth.auth.currentUser.getIdToken() );
}
我的拦截器代码: 拦截(请求:HttpRequest,下一个:HttpHandler):Observable> {
if (request.url.indexOf('oauthCallback') > -1) {
return next.handle(request);
}
this.auth = this.inj.get(AuthService); // inject the authservice manually (see https://github.com/angular/angular/issues/18224)
return this.auth.getUserIdToken().pipe(
switchMap(token => {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
return next.handle(request);
})
);
}
谢谢您的帮助。