oauth2.0 正在刷新Spotify access_token

p8ekf7hl  于 2023-04-19  发布在  其他
关注(0)|答案(2)|浏览(148)

我试图使用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上有人说我需要传入代码,但代码是一次性使用的,非常短暂的对象,已经被消耗/过期。
你觉得我哪里做错了吗?

9ceoxa92

9ceoxa921#

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

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

然而,我想这也不是代码中真正的错误,因为您以某种方式设法获得了一个刷新令牌,该令牌要求您之前成功授权一次。

xesrikrc

xesrikrc2#

spot = SpotifyOAuth(<CLIENT_ID>, <CLIENT_SECRET>, <REDIRECT_URL>)
access_token = spot.refresh_access_token(<SPOTIFY_REFRESH>)
print(access_token)

这对我很有效
https://spotipy.readthedocs.io/en/2.13.0/#spotipy.oauth2.SpotifyOAuth

相关问题