網站搜尋

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);
        })
    );
}

謝謝你的幫助。