刷新Spotify access_token

时间:2017-07-26 22:42:57

标签: oauth-2.0 refresh token spotify

我尝试使用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上的某个人说我需要传入代码,但是代码是一个单独使用的,非常短暂的对象已经消耗/过期。

对我做错了什么的想法?

1 个答案:

答案 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>')

但是,我想这并不是你的代码实际上有什么问题,因为你设法得到一个刷新令牌,要求你成功地授权一次。