我正在尝试通过python和请求库向https://accounts.spotify.com/api/token发出POST请求,但无法正常工作。我可以通过curl命令执行请求:
注意-* *中包含的参数正确无误,并且可以在curl请求中使用
curl -H "Authorization: Basic *base 64 encoded client ID and secret*"
-d grant_type=authorization_code -d code=*auth code* -d
redirect_uri=https%3A%2F%2Fopen.spotify.com%2F
https://accounts.spotify.com/api/token
并且请求工作正常,但是当我尝试在python中做出我认为完全相同的请求时,我总是收到相同的错误请求错误
headers = {
"Authorization": "Basic *base64 encoded client ID and secret*"
}
params = {
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "https://open.spotify.com/"
}
response = requests.post(
url,
params=params,
headers=headers
)
如果您可以帮助我弄清楚这两个请求之间的区别以及为什么python一个请求似乎从未起作用,那将是令人惊讶的。
有关参数,请参见https://developer.spotify.com/documentation/general/guides/authorization-guide/的第2节
答案 0 :(得分:1)
您在-d
请求中使用curl
标志,该标志代表data
。
因此,您还应该在Python data
请求中以POST
的形式传递参数:
headers = {
"Authorization": "Basic *base64 encoded client ID and secret*"
}
params = {
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "https://open.spotify.com/"
}
response = requests.post(
url,
data=params,
headers=headers
)
答案 1 :(得分:0)
好像您将有效负载置于错误的论点之下,请尝试将params
更改为json
或data
(取决于API接受的请求类型):
response = requests.post(
url,
json=params,
headers=headers
)