我尝试使用refresh_token(显然)刷新我拥有的Spotify access_token。文档将此作为示例curl语句:
curl -H "Authorization: Basic ZjM4Zj...Y0MzE=" -d grant_type=refresh_token -d refresh_token=NgAagA...NUm_SHo https://accounts.spotify.com/api/token
这是我的Python实现:
payload = {
'grant_type': 'refresh_token',
'refresh_token': <REFRESH_TOKEN>
}
r = requests.post('https://accounts.spotify.com/api/token', data=payload,
headers={'Authorization': 'Basic <CLIENT_SECRET>'})
在这两种情况下,我都会回来{"error":"invalid_client"}
我已经尝试在post数据中传递client_id和client_secret,但我总是找回invalid_client。 SO上的某个人说我需要传入代码,但是代码是一个单独使用的,非常短暂的对象已经消耗/过期。
对我做错了什么的想法?
答案 0 :(得分:0)
我能看到的唯一问题就是你写道:
headers={'Authorization': 'Basic <CLIENT_SECRET>'}
当它使用你的符号时,应该是:
headers={'Authorization': 'Basic ' + base64.b64encode('<CLIENT_ID>:<CLIENT_SECRET>')}
但是,由于您正在使用请求,因此可以进一步简化。如下所述:http://docs.python-requests.org/en/latest/user/authentication/只需删除标题,然后将其替换为auth:
auth=('<CLIENT_ID>', '<CLIENT_SECRET>')
但是,我想这并不是你的代码实际上有什么问题,因为你设法得到一个刷新令牌,要求你成功地授权一次。