Извините за запутанный заголовок. Я работаю над проектом, который собирает лучшие 5 песен артистов в плейлист для пользователя. Я нахожусь на контрольно-пропускном пункте на последнем этапе процесса, и я застрял.
Мой токен доступа работает, когда я ищу пять лучших треков артистов, и работает, когда я создаю плейлист. Я могу подтвердить получение идентификаторов треков и увидеть, что в моем приложении Spotify создан список воспроизведения, но при попытке добавить треки в список воспроизведения появляется ошибка 401.
Я использую passport-spotify для аутентификации, и область действия установлена на ["user-read-private, playlist-modify-private, playlist-modify-public"].
Поскольку я могу добавлять большое количество песен в список воспроизведения в зависимости от количества исполнителей, я передаю uris песни в тело запроса axios. Вот документация для добавления треков в плейлист .
Я могу проверить в объекте ошибки, что токен доступа и uris передаются в почтовый вызов.
Я выложу свой код для вызова addTracks axios ниже, и я более чем рад поделиться информацией и в объекте ошибки. Если вы хотите увидеть код авторизации, я также опубликую это.
Спасибо, что заглянули!
const addTracks = (req, res) => {
let chunk = 100;
let result = [];
console.log('FINAL TRACKS: ', finalTracks);
console.log('addTracks REQ.BODY: ', req.body);
console.log('addTracks REQ.USER: ', req.user);
for (let i = 0; i < finalTracks.length; i += chunk) {
result.push(finalTracks.slice(i, i + chunk));
console.log('result: ', result);
}
result.map(chunkArr => {
axios
.post(
`https://api.spotify.com/v1/playlists/${req.body.playlist.id}/tracks`,
{
headers: {
Authorization: `Bearer ${req.user.accessToken}`,
'Content-Type': 'application/json'
}
},
{
body: {
uris: JSON.stringify(chunkArr)
}
}
)
.then(resp => {
// console.log(resp);
// res.status(200).json(resp);
console.log('awaiting promise resolution');
})
.catch(err => console.log('addTracks > result.map catch: ', err));
});
};