You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:44:52