javascript - 从播放列表中删除项目时 Spotify Web API 错误 400“缺少曲目” - Pizzly
问题描述
我正在尝试从经过身份验证的 spotify 用户的播放列表中删除一首歌曲,出于某种原因,我得到了Error 400 Missing Tracks
,即使我知道这首歌在那里并且播放列表是正确的
我正在使用Bearer 的 Pizzly来处理 API 请求
知道什么可能导致这个问题吗?这是指向Spotify 的 API 文档的链接
这是一个示例输出JSON.stringify(body)
{"tracks":[{"uri":"spotify:track:2fTdRdN73RgIgcUZN33dvt"}]}
async removeSongsFromPlaylist(context, payload) {
var tracks = payload[0]
var playlistID = payload[1] || context.getters.user.favorites_playlist.id
var authID = context.getters.spotifyAuthID
var endpoint = `/playlists/${playlistID}/tracks`
var uris = tracks.map(track => { return {uri: track.uri}})
var body = {"tracks": uris}
console.log(`URIS:`)
console.log(body);
console.log(`playlist: ${playlistID}`);
return pizzly.integration("spotify").auth(authID).delete(endpoint, {
body: JSON.stringify(body),
headers: { "Content-Type": "application/json" }
})
.then(response => response.json())
.then(responseJSON => {
console.log("song successfully deleted")
console.log(responseJSON)
})
.catch((err) => console.log(err))
},
更新:我确实在一个非常 hacky 的解决方案上取得了一些进展
我采用了Spotify 的 cURL 示例,将其转换为使用此链接获取,并将其放入我的函数中,如下所示:
fetch(`https://api.spotify.com/v1/playlists/${playlistID}/tracks`, {
body: "{\"tracks\":[{\"uri\":\"" + tracks[0].uri + "\"}]}",
headers: {
Accept: "application/json",
Authorization: "Bearer ~accessTokenHiddenForPrivacy~",
"Content-Type": "application/json"
},
method: "DELETE"
})
.then(response => response.json())
幸运的是它奏效了!问题是我尝试将body
下面的内容复制并粘贴到上面的代码中,但它仍然显示“缺少曲目”。如果没有另一种获取用户访问令牌的方法,我无法将这段代码保留在下面——目前由 pizzly 和 auth id 处理。
解决方案
推荐阅读
- android - Ionic Firestore 安全问题和 Firestore 规则
- webpack - 具有动态公共路径的 Webpack 文件加载器
- python - SELECT BETWEEN to date 和同一日期的两个不同时间
- oracle - Oracle 查找每列的数据量
- python - 使用 pandas/numpy 按 bin 边界平滑
- javascript - 将包含分隔符的文本粘贴到 Vuetify 组合框中不会相应地分隔芯片分隔符吗?
- javascript - Vuetify - 第一个按键事件值始终为空字符串
- java - 如何在 Java 8 中迭代列表并在其中分组值
- javascript - javascript - 如何根据键对对象列表进行分组并合并结果
- javascript - Puppeteer:使用 cookie 横幅接受多个网站中的所有 cookie