刷新和访问令牌时,Spotify“意外状态:400” - python

时间:2017-01-08 20:14:07

标签: python python-3.x post spotify

当尝试使用python 3授权spotify时,我得到一个“server_error”,其描述为“Unexpected status:400”。

我使用了正确的授权码,并且spotify文档(https://developer.spotify.com/web-api/authorization-guide/)指示我使用带有这些参数的post命令。

我是一个非常的菜鸟,我不知道我做错了什么。

以下是代码:

import requests

params = {'grant_type': 'authorization_code', 'code': authcode, 'redirect_uri': 'https://example.com/callback','client_id':'example', 'client_secret':'example'}

req=requests.post('https://accounts.spotify.com/api/token', params=params)
print(req.content)

1 个答案:

答案 0 :(得分:1)

根据spotify自己的指南(见第4步):

https://developer.spotify.com/web-api/authorization-guide/

请求新令牌的授权信息必须通过“授权”变量进入标题:

  

授权:必填。 Base 64编码的字符串,包含   客户端ID和客户端密钥。该字段必须具有以下格式:   授权:基本base64编码client_id:client_secret

您可以在请求正文中使用它。

所以你应该这样做:

import requests
import base64

authcode = 'valid_authcode_from_prev_authorization_step'

params = {'grant_type': 'authorization_code', 'code': authcode, 'redirect_uri': 'https://example.com/callback'}

client_id = 'example_id'
client_secret = 'example_secret'

b64_val = base64.b64encode("%s:%s" % (client_id, client_secret))

req = requests.post(
    'https://accounts.spotify.com/api/token', params=params,
    headers={'Authorization': b64_val})

但是,为此,您需要一个有效的身份验证代码,只有让用户完成令牌获取步骤之前的身份验证步骤才能获得该代码。

此代码会发送到您在应用设置中注册的回调,如果您有假回调设置则无法使用(即:http://example.com/callback)。