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

已加入白名单的Spotify URI仍返回invalid_grant(重定向URI无效)错误

解决Spotify API获取Access Token时的invalid_grant(Invalid redirect URI)错误

我完全懂你这种被千篇一律的“加斜杠”答案绕得头大的感受——明明照着试了,问题还是卡着,太闹心了。针对你遇到的这个问题,咱们从几个容易被忽略的细节入手排查:

  • 重定向URI必须100%完全匹配
    Spotify对重定向URI的匹配要求到了“苛刻”的程度:大小写(比如/Test和/test)、端口号、路径里的每一个字符都必须和你在Spotify开发者后台应用设置里的“Redirect URIs”列表里的条目完全一致。先去后台仔细核对一遍,哪怕是多一个空格或者少一个斜杠都不行。

  • 禁止对redirect_uri做URL编码
    你代码里注释掉encodeURIComponent的版本是对的!Spotify的token接口要求redirect_uri传入原始字符串,编码后的URI会被判定为不匹配,所以保持当前redirect_uri: 'http://localhost:3000/Test'的写法就好。

  • 检查授权码(code)的有效性
    invalid_grant错误不一定只和URI有关——授权码只能使用一次,而且有效期只有10分钟左右。如果你的code是之前生成的旧码,或者已经用过一次,就会触发这个错误。建议重新走一遍授权流程,获取全新的授权码再尝试请求token。

  • 确保请求的Content-Type正确
    用superagent发送请求时,必须设置Content-Type为application/x-www-form-urlencoded,因为Spotify的token接口只接受表单格式的请求体。如果用JSON格式发送,会导致接口无法正确解析参数,间接引发URI相关的错误。可以在请求里加上.type('form'):

    const request = require('superagent');
    const data = {
      grant_type: 'authorization_code',
      code: '你的新授权码',
      redirect_uri: 'http://localhost:3000/Test'
    };
    
    request.post('https://accounts.spotify.com/api/token')
      .type('form')
      .send(data)
      .then(response => {
        console.log('获取到的token:', response.body);
      })
      .catch(err => {
        console.error('错误:', err.response.body);
      });
    
  • 核对应用的授权范围(Scopes)
    虽然这和URI错误提示没有直接关联,但如果授权时请求的scopes和你后台设置的不一致,也可能间接导致invalid_grant。确认一下授权流程中请求的scopes和应用后台的配置匹配。

先从核对后台重定向URI和更换新授权码这两点入手,大概率能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:29:18