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

Spotipy有效token调用playlist_upload_cover_image报401错误

问题根因

该问题由旧版本Spotipy库的逻辑缺陷导致,与token权限范围、封面图片格式无关:

  • 你当前初始化Spotify客户端的写法为sp = spotipy.Spotify(access_token),即直接传入裸token字符串。这种初始化模式下,库的自动鉴权逻辑仅会在发送application/json类型请求时,自动在请求头中携带Authorization字段。
  • playlist_change_details接口的请求体为JSON格式,鉴权头可正常注入,因此请求执行成功。
  • playlist_upload_cover_image接口的请求体为纯base64编码图片内容,请求头Content-Type为image/jpeg,不属于JSON类请求。旧版本Spotipy构造这类请求时会跳过自动添加鉴权头的逻辑,最终发出的请求未携带token,触发401 "No token provided"错误。控制台日志中显示的「请求参数:{}」也可佐证该问题——请求构造阶段未正确注入鉴权头信息。
修复方案
  • 方案一:直接升级Spotipy到最新版本,官方已修复该非JSON请求漏带鉴权头的问题,执行命令pip install --upgrade spotipy即可。
  • 方案二:若无法升级依赖,需调整客户端初始化逻辑,不要手动提取access_token字符串传入构造函数,改用官方标准的auth_manager参数传入OAuth实例即可。修改认证模块中客户端初始化部分的代码:
    将原有代码:
    sp = spotipy.Spotify(access_token)
    
    替换为:
    sp = spotipy.Spotify(auth_manager=sp_oauth)
    
    该初始化方式下,所有类型的请求(包括非JSON格式的图片上传请求)都会被自动注入合法的Authorization请求头,不会出现token漏带问题。
  • 补充校验点:待token问题修复后,可检查传入的base64封面字符串是否携带data:image/jpeg;base64,前缀,若有需删除该前缀,仅保留纯base64编码内容即可,避免触发图片格式校验错误。

内容的提问来源于stack exchange,提问作者MrSchiller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:57:11