通过请求库调用API获取访问令牌

Calling API through requests Library to get access token

我正在尝试获取特定 API 的访问令牌,curl 命令如下:

    curl --location --request POST 'https://example.com/oauth/connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=abcd' \
--data-urlencode 'client_secret=abc' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=us' \
--data-urlencode 'scope=a' \
--data-urlencode 'password=abc'

我在python中有以下代码:

url = 'https://example.com/oauth/connect/token'
body = {'client_id':'abcd', 
'client_password':'abc', 
'grant_type':'password',
'username':'us',  
'scope':'a',
'password':'abc'}
headers = {'Content-Type':'application/x-www-form-urlencoded'}

response = requests.post(url, data=body, headers=headers, verify=False)
print(response,response.content)

我一直收到 <Response [400]> b'{"error":"invalid_client"}' 错误。

我相信我已经尝试了几乎所有的方法,但我迷路了。如果我遗漏了一些非常简单的东西,请告诉我。

我注意到,您的 curl 命令使用 client_secret,而您的 requests 命令使用 client_password.

为了调试此类请求,我推荐像 https://www.toptal.com/developers/postbin/ 这样的免费页面,您可以在其中发送 curlrequests 消息并比较到达端点的内容。