Spotify API 发布请求将曲目添加到播放列表 - 错误 400 错误请求

Posted

技术标签:

【中文标题】Spotify API 发布请求将曲目添加到播放列表 - 错误 400 错误请求【英文标题】:Spotify API Post Request Add Tracks To Playlist - ERROR 400 BAD REQUEST 【发布时间】:2018-08-15 23:13:48 【问题描述】:

在使用 Spotify API 向用户播放列表添加曲目时,我遇到了一个似乎很常见的错误。在之前的 fetch 方法中,我获得了用户 playlistId,现在正尝试使用该 playlistId 将曲目发布到该播放列表中。我遵循了文档,但显然遗漏了一些东西,这里是代码:

    `        //userUd, playlistId, currentUserAccessToken, trackURIs are all defined 

fetch(`https://api.spotify.com/v1/users/$userId/playlists/$playlistId/tracks`, 
            headers: 
              'Authorization': 'Bearer ' + currentUserAccessToken
            ,
            contentType: 'application/json',
            method: 'POST',
            body: JSON.stringify(
              "uris": `[$trackURIs]`
            )
          ).then(success => 
            return success;
          ).catch(err => 
            console.log('here is your error', err);
          )`

我做了 GET 请求来授权用户 - 包括在不同的代码块中创建公共播放列表的范围,这是有效的,这是:

`let scopes = 'playlist-modify-public';

window.location.replace(https://accounts.spotify.com/authorize?client_id=$clientID&scope=$scopes&redirect_uri=$redirectURI&response_type=token);`

非常感谢!

【问题讨论】:

trackURIs 是否正确定义为逗号分隔的 spotify URI 列表? 是的,它是一个字符串数组 - 字符串是所选曲目 uri 示例喜欢这个"uris":"[spotify:track:4omURIn6jRJ77sHxzSxor5,spotify:track:0mm5kY0FbqycYqXUvUBUn0]" 【参考方案1】:

JSON 数组需要在其中的每个元素周围加上引号。所以每首曲目都应该被引用,像这样:

"uris": ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh", "spotify:track:1301WleyT98MSxVHPZCA6M"]

我认为您提供的对象名称 uris 包含无效数组。

并且,请注意,您也可以将播放列表项作为查询参数传递(而不是在正文中),而无需使用 json。 https://developer.spotify.com/web-api/add-tracks-to-playlist/

【讨论】:

我试过了,仍然没有运气,同样的错误应用。感谢您的评论! 尝试将它们作为查询参数来查看请求的其余部分是否按预期工作?你还是只拿到400吗?

以上是关于Spotify API 发布请求将曲目添加到播放列表 - 错误 400 错误请求的主要内容,如果未能解决你的问题,请参考以下文章

无需登录即可将曲目添加到播放列表 - API Spotify

使用 spotify-api-server 添加曲目到 Spotify 播放列表

Spotify API:第一次尝试将曲目添加到播放列表时出错,第二次尝试有效

Spotify + AppleScript:将当前曲目添加到播放列表

如何将曲目添加到 Spotify 中的“已加星标”播放列表?

在 Spotify API Javascript + 添加到服务器中搜索曲目