首页 > 解决方案 > 从播放列表中删除项目时 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 处理。

标签: javascriptapirestfetchspotify

解决方案


推荐阅读