当尝试使用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)
答案 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)。