使用Spotify Web API上传自定义播放列表封面遇401错误求助
Spotify播放列表封面上传401错误排查方案
核心问题分析
你遇到的401 Unauthorized,大概率不是token或权限的表面问题,而是图片数据格式不符合API要求导致的验证失败——你的代码直接把环境变量里的COVER_PHOTO作为请求体发送,但Spotify API要求的是二进制图片数据,而非图片路径或base64字符串(如果你的环境变量存的是这两类内容的话)。
具体修复步骤
确保图片是二进制流
如果COVER_PHOTO是本地图片路径,先读取文件的二进制内容:const fs = require('fs'); const imgFile = fs.readFileSync(process.env.COVER_PHOTO);如果是base64字符串,先解码成Buffer:
const imgFile = Buffer.from(process.env.COVER_PHOTO.split(',')[1], 'base64');再核对权限细节
确认权限包含playlist-modify-public(公开播放列表)或playlist-modify-private(私有播放列表),且token是通过授权码流程获取的——客户端凭证流程生成的token没有用户权限,无法修改播放列表。匹配正确的Content-Type
不要硬写image/jpeg,根据图片实际格式调整,比如PNG就用image/png。
修复后的完整代码示例
const fs = require('fs'); const axios = require('axios'); const url = `https://api.spotify.com/v1/playlists/${playlist.id}/images`; const imgFile = fs.readFileSync(process.env.COVER_PHOTO); axios.put(url, imgFile, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'image/jpeg' // 按实际图片格式修改 } }) .then(() => console.log('封面更新成功')) .catch(err => console.error('错误详情:', err.response.data));
额外排查点
- 测试token有效性:用该token调用
GET /me接口,能返回用户信息才说明是有效的用户授权token。 - 确认播放列表归属:如果播放列表属于其他用户,你即使有链接也没有修改权限。
内容的提问来源于stack exchange,提问作者Matt Charnock
相关产品推荐
相关产品推荐

