使用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
相关产品推荐
相关产品推荐

