刷新Spotify access_token

问题描述:

我想使用refresh_token来(显然)刷新Spotify access_token我有。该文档提供了以此为例卷曲声明:刷新Spotify access_token

curl -H "Authorization: Basic ZjM4Zj...Y0MzE=" -d grant_type=refresh_token -d refresh_token=NgAagA...NUm_SHo https://accounts.spotify.com/api/token

,这里是我的Python implemtation:

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"}

我试着在发布数据中传递我的client_id和client_secret,但我总是返回invalid_client。有人在这里说,我需要传递代码,但代码是一个单一的使用,非常短的对象,已经被消耗/过期。

我在做什么错?

我能看到的唯一的问题是,你写的:

headers={'Authorization': 'Basic <CLIENT_SECRET>'} 

时,用你的符号,应该是:

headers={'Authorization': 'Basic ' + base64.b64encode('<CLIENT_ID>:<CLIENT_SECRET>')} 

然而,由于您使用的是可以进一步simplifed要求。如下所述:http://docs.python-requests.org/en/latest/user/authentication/只需删除页眉与AUTH替换成:

auth=('<CLIENT_ID>', '<CLIENT_SECRET>') 

不过,我想,这是不是在你的代码实际上是错误的决定,因为你总算得到了刷新令牌,该令牌要求您以前成功授权一次。

+0

宾果!请求的auth参数修复了它。我有一个auth和refresh标记,因为最初的OAuth调用是在JavaScript中使用OAuth NPM完成的,而刷新代码是在Python中。谢谢,@ joon。 –