调用Spotify API刷新令牌时持续返回unsupported_grant_type错误求助
问题排查与修复
核心问题
你存在两个关键错误:
- 请求头声明
Content-Type: application/x-www-form-urlencoded,但请求体却用.to_json转成了JSON格式,Spotify令牌接口无法解析这种格式的请求体,导致识别不到grant_type参数。 - 常规刷新令牌请求需要携带
client_secret参数(除非采用PKCE授权流程),当前代码缺少该参数。
修正后的代码
@response = HTTParty.post("https://accounts.spotify.com/api/token", headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: { grant_type: 'refresh_token', refresh_token: ENV['REFRESH_TOKEN'], client_id: ENV['CLIENT_ID'], client_secret: ENV['CLIENT_SECRET'] # 常规流程必填参数 } # 移除.to_json,HTTParty会自动将哈希编码为x-www-form-urlencoded格式 )
补充说明
- 若你的应用采用PKCE授权流程,则不需要
client_secret,但仍需确保请求体为表单格式而非JSON。 - 验证环境变量
REFRESH_TOKEN、CLIENT_ID、CLIENT_SECRET是否正确加载,避免因变量为空导致参数缺失。
内容的提问来源于stack exchange,提问作者Jonathan Grinstead
相关产品推荐
相关产品推荐

