Estoy probando WebAPI y me encontré con un inconveniente que no tiene sentido.
En la consola del desarrollador, una búsqueda de la lista de episodios para el ID del programa 4rOoJ6Egrf8K2IrywzwOMk una lista.
Incluso acceder a la URL dada ( https://api.spotify.com/v1/shows/4rOoJ6Egrf8K2IrywzwOMk/episodes ) en el navegador devuelve la lista de episodios, si estoy conectado a mi cuenta de Spotify.
No estoy seguro de lo que está roto en mi código.
async function listPodcastEpisodes(id) { const access_token = await getAuth() const api_url = `https://api.spotify.com/v1/shows/${id}/episodes` console.log(api_url) try { const response = await axios.get(api_url, setAxiosOptions(access_token)) return response.data } catch(err) { console.log(`Error: ${JSON.stringify(err?.response?.data, null, 2)}`) } } listPodcastEpisodes(process.argv[2]) .then(x => console.log(x))Este código devuelve:
$ node getInfo.js 4rOoJ6Egrf8K2IrywzwOMk https://api.spotify.com/v1/shows/4rOoJ6Egrf8K2IrywzwOMk/episodes Error: { "error": { "status": 404, "message": "non existing id" } } undefinedLas otras funciones y configuraciones variables:
const auth = `${process.env.ID}:${process.env.SECRET}` const auth_encoded = Buffer.from(auth, 'utf-8').toString("base64") function setAxiosOptions(data) { return { headers: { 'Authorization': `Bearer ${data}`, 'Content-Type': 'application/json' } } } async function getAuth () { try { const token_url = 'https://accounts.spotify.com/api/token'; const data = qs.stringify({'grant_type':'client_credentials'}); const response = await axios.post(token_url, data, { headers: { 'Authorization': `Basic ${auth_encoded}`, 'Content-Type': 'application/x-www-form-urlencoded' } }) return response.data.access_token; } catch(error) { console.log(error); } }Parece que es posible que deba incluir el parámetro de market .
Encontré este problema de GitHub en el repositorio oficial de API web que describe el mismo problema que está experimentando. Se hace referencia a este problema en este problema , donde el usuario de GitHub, MrXyfir, publica su solución alternativa :
Editar: para cualquier otra persona que termine con este problema, la solución para mí fue establecer el parámetro de mercado. https://api.spotify.com/v1/shows/4rOoJ6Egrf8K2IrywzwOMk/episodes?market=US