Мне нужно добавить токен к запросу в моем перехватчике.Я продолжаю получать сообщение об ошибке
core.js:1673 ERROR TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
at subscribeTo (subscribeTo.js:41)
at subscribeToResult (subscribeToResult.js:11)
at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._innerSub (mergeMap.js:73)
at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._tryNext (mergeMap.js:68)
at
Получение токена является асинхронной операцией
В AuthService.ts у меня есть
getToken2() {
if (firebase.auth().currentUser) {
return from(firebase.auth().currentUser.getIdToken());
} else {
return null;
}
}
Мой перехватчик выглядит следующим образом:но я продолжаю получать ошибку
import {
HttpInterceptor,HttpRequest,HttpHandler,HttpEvent} from "@angular/common/http";
import { Observable } from "rxjs";
import { mergeMap, switchMap, flatMap } from "rxjs/operators";
import { Injectable } from "@angular/core";
import { AuthService } from "../auth/auth.service";
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private authService: AuthService) {}
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
const tokenObservable = this.authService.getToken2(); // if there is a user logged in
if (tokenObservable) {
tokenObservable.pipe(
switchMap(token => {
const copiedReq = req.clone({
params: req.params.set("auth", token)
});
return next.handle(copiedReq);
})
);
} else {
return next.handle(req);
}
}
}