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

使用Python调用Spotify API获取Access Token和Refresh Token时触发400 Bad Request错误求助

使用Python调用Spotify API获取Access Token和Refresh Token时触发400 Bad Request错误求助

问题描述:

我已经从回调URI里拿到了授权码,严格按照文档说明来使用它。反复检查了client_id、client_secret,还有回调URI和Token请求的URL,确认都没问题,但就是一直触发400 Bad Request错误,实在搞不懂哪里出问题了。

我的代码如下:

parameters = {
"grant_type":"authorization_code",
"code": code,
"redirect_uri":SPOTIFY_URI
}

auth_string = base64.b64encode(f"{SPOTIFY_ID}:{SPOTIFY_SECRET}".encode("utf-8"))

headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": f"Basic {auth_string.decode('utf-8')}",
}

response = requests.post(
    "https://accounts.spotify.com/api/token", params=parameters,
    headers=headers
)

response.raise_for_status()
print(response)

触发的错误信息:

requests.exceptions.HTTPError: 400 Client Error: Bad Request for url:<my_token_url>

解决思路与方案:

这个问题我之前也碰到过,大概率是参数传递方式不对!Spotify的Token接口明确要求授权参数通过**表单数据(form data)**放在请求体里发送,而不是作为URL参数传递。你现在用了params=parameters,这会把参数拼在URL后面,完全不符合接口要求,所以才会返回400错误。

给你几个具体的排查和修改步骤:

  • 修改参数传递方式:把params=parameters改成data=parameters,这是最关键的一步。修改后的请求代码如下:
response = requests.post(
    "https://accounts.spotify.com/api/token", data=parameters,
    headers=headers
)
  • 再次核对重定向URI:Spotify对重定向URI的匹配要求非常严格,必须和你在开发者后台设置的完全一致,包括大小写、是否有末尾斜杠、HTTP/HTTPS前缀这些细节,哪怕差一个字符都会报错。
  • 检查授权码有效性:授权码(code)只能使用一次,用过就会失效,如果之前尝试过请求但没成功,可能需要重新获取新的授权码。
  • 打印详细错误信息:如果修改后还是报错,建议捕获异常时打印Spotify返回的具体错误详情,它会告诉你具体的错误原因(比如invalid_grant、redirect_uri_mismatch等),方便进一步排查:
try:
    response.raise_for_status()
    print(response.json())  # 正常时打印Token信息
except requests.exceptions.HTTPError as e:
    print(f"错误详情: {response.json()}")  # 打印具体错误描述

按照上面的步骤修改后,应该就能成功获取Token了。

备注:内容来源于stack exchange,提问作者Kurokatana94

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:34:31