Spotify Web API认证报错:获取刷新与访问令牌时持续返回400错误
Troubleshooting Spotify Web API Token Exchange 400 Error
我之前也踩过Spotify Web API换令牌的400错误坑,太闹心了!结合我当时排查的经验,给你列几个最容易出问题的点,你挨个检查下:
- 严格遵循请求格式要求:Spotify的令牌交换端点(
https://accounts.spotify.com/api/token)只接受POST请求,且必须设置请求头Content-Type: application/x-www-form-urlencoded。很多人会下意识用JSON格式发请求体,这绝对会触发400错误——哪怕参数全对,格式不对也白搭。 - 核对所有参数的准确性:
grant_type必须精确写为authorization_code,拼写错一个字符都不行code只能使用一次,如果你已经重试过几次,得重新走用户授权流程获取新的授权码,旧码已经失效了redirect_uri必须和你在Spotify开发者后台注册应用时填写的完全一致,包括大小写、末尾的斜杠、任何特殊字符的编码,差一个细节都会报错client_id和client_secret:要么将这两个参数放入请求体,要么使用Basic Auth(把client_id:client_secret做Base64编码后,放在Authorization: Basic <编码后的字符串>请求头里),但不要同时使用两种方式,否则会导致参数冲突
- 检查URL编码问题:如果你的
redirect_uri包含特殊字符(比如&、空格、非ASCII字符),必须对其进行URL编码后再传递。比如http://localhost:3000/callback?state=123要编码成http%3A%2F%2Flocalhost%3A3000%2Fcallback%3Fstate%3D123 - 确认请求端点正确性:务必用
https://accounts.spotify.com/api/token,不要误用到Spotify的其他API端点(比如api.spotify.com/v1/开头的)
正确请求示例(curl)
用请求体传递客户端信息的版本:
curl -X POST "https://accounts.spotify.com/api/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code&code=YOUR_FRESH_AUTH_CODE&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
用Basic Auth的版本(更安全,推荐):
curl -X POST "https://accounts.spotify.com/api/token" \ -H "Authorization: Basic $(echo -n 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET' | base64)" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code&code=YOUR_FRESH_AUTH_CODE&redirect_uri=YOUR_REGISTERED_REDIRECT_URI"
如果以上检查都没问题还是报错,建议把你的请求头、请求体内容(记得隐藏敏感的client_id、secret和code)贴出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者Ian Carder
相关产品推荐
相关产品推荐

