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:将当前曲目添加到播放列表