typescript - 如何修復 angular firebase 專案中 "Cannot read property 'getIdToken' of null" 的錯誤
我需要將 firebase token 從我的 authService 取得到我 Angular 5 專案的攔截器:當使用者第一次驗證時,我可以順利取得 token 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() );
}
我的攔截器程式碼: intercept(request: HttpRequest, next: 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);
})
);
}
謝謝你的幫助。