使用Spotify API添加曲目至播放列表时出现400 Bad Request错误
嘿,我之前在对接Spotify API的时候也踩过类似的坑,结合官方文档和实际排查经验,给你梳理几个最可能的问题点,你可以逐一检查:
一、权限范围(Scope)是否足够
你提到已经授权了创建公开播放列表的权限,但添加曲目需要的是专门的修改权限:如果是公开播放列表,需要playlist-modify-public;如果是私有播放列表,需要playlist-modify-private。
- 先确认你的scope列表里包含对应的权限,比如:
let scopes = 'playlist-modify-public playlist-modify-private'; - 划重点:如果之前已经用旧的scope授权过,必须让用户重新授权(可以在授权URL里加
show_dialog=true强制弹出授权窗口),否则新的权限不会生效。
二、请求格式是否符合要求
向播放列表添加曲目是POST请求,几个容易出错的细节:
- 请求头必须携带有效的Access Token:
确保Authorization字段格式是Bearer {你的access_token},而且token不能过期(Spotify的access token默认有效期1小时,过期后需要用refresh token刷新)。 - 请求体的格式不能错:
必须是JSON格式,且uris字段是包含完整曲目URI的数组,示例代码如下:fetch(`https://api.spotify.com/v1/playlists/${playlistId}/tracks`, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ uris: ['spotify:track:4iV5W9uYEdYUVa79Axb7Rh', 'spotify:track:1301WleyT98MSxVHPZCA6M'] }) })- 注意:曲目URI必须是
spotify:track:{track_id}的完整格式,不能只传track_id。
- 注意:曲目URI必须是
- 确认playlistId的正确性:
检查你拿到的playlistId是否是目标播放列表的正确ID,避免把用户ID或其他参数当成了播放列表ID。
三、播放列表的权限归属问题
如果这个播放列表不是当前授权用户创建的,而是用户关注的他人播放列表,需要确认该播放列表是否开启了协作编辑权限。如果是私有播放列表且不属于当前用户,你是没有权限修改它的。
四、查看具体的错误响应信息
Spotify API的错误提示非常明确,建议在请求里捕获错误并打印,比如:
.then(response => { if (!response.ok) { return response.json().then(err => { throw err; }); } return response.json(); }) .catch(error => { console.error('添加曲目失败详情:', error); });
根据错误信息就能快速定位问题:比如403是权限不足,404是播放列表不存在,400是请求格式错误,error.message里会有更具体的说明。
内容的提问来源于stack exchange,提问作者maxccpage
相关产品推荐
相关产品推荐

