Hola a todos. Encontré la solución al problema del las peticiones HTTP con token. Muchos por aquí ya dieron su solución. Pero a mí no me sirvió ninguna de ellas. Os dejo mí código por aquí:
En el archivo lugares.service.ts:
public getLugares(idToken) {
return this.http.get(`${this.API_ENDPOINT}/.json?auth=${idToken}`)
.pipe(map((response: any) => response.lugares));
}
En el archivo lugares.component.ts:
constructor(private lugaresService: LugaresService, private fireAuth: AngularFireAuth) {
this.fireAuth.auth.onAuthStateChanged(user => {
if (user) {
this.fireAuth.auth.currentUser.getIdToken(true)
.then((idToken) => {
this.lugaresService.getLugares(idToken)
.subscribe(lugares => {
this.lugares = Object.keys(lugares).map(key => {
lugares[key].id = key;
return lugares[key];
});
this.state = 'final';
}, error => {
this.errorMessage = `Tenemos algo de dificultados, disculpe las molestias. Error: ${error.status}`;
});
});
}
});
}
this.fireAuth.auth.onAuthStateChanged Es un escuchador de eventos que saltará cuando firebase haya devuelto el usuario logeado. Con eso podrás hacer F5 y no dará error.
this.fireAuth.auth.currentUser.getIdToken Con esta línea pides el token de autenticación del usuario logeado.
this.lugaresService.getLugares Y por último llamamos a nuestro servicio de lugares pasándole el token como parámetro.
Espero que os sirva, un saludo!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?