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

Spotify Web API JS的getMyTopTracks调用失败,仅getMe()可用报403错误

问题解决:Spotify API getMyTopTracks返回403,仅getMe正常

你遇到的问题核心是权限范围(Scope)不匹配,因为Spotify不同API接口要求的授权权限不一样:

  • getMe()只需要基础用户身份权限(比如user-read-private)就能正常返回数据
  • getMyTopTracks()必须要求user-top-read专属权限,授权时没申请这个权限就会返回403 Forbidden

具体解决步骤:

  1. 更新授权Scope配置
    在发起Spotify授权请求的代码里,确保scope参数包含user-top-read。比如授权URL的scope部分应类似:

    const scopes = 'user-read-private user-top-read'; // 可根据需求添加其他必要权限
    const authUrl = `https://accounts.spotify.com/authorize?client_id=${clientId}&response_type=code&redirect_uri=${redirectUri}&scope=${encodeURIComponent(scopes)}`;
    
  2. 重新获取授权令牌
    旧令牌是基于之前的scope生成的,不会自动更新权限。需要让用户重新走一遍授权流程,拿到包含新scope的令牌。

  3. 验证令牌权限
    解码你的JWT令牌(用JWT解码工具或代码解析),查看scope字段是否包含user-top-read。如果没有,说明授权流程仍有问题。

  4. 排查低概率问题

    • 确认getMyTopTracks参数格式正确:你代码里的time_range: "medium_term"是合法取值(允许值:short_term/medium_term/long_term),这部分没问题。
    • 检查请求头是否正确携带令牌:虽然getMe()能工作,但要确认getMyTopTracks调用和getMe使用了同一个令牌实例,避免令牌不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:57:07