在使用Microsoft Graph API的Python使用接收承载令牌时遇到问题。这是我到目前为止的内容:
import requests
import json
headers = {
'Content-Type': 'x-www-form-urlencoded',
'Authorization': 'Basic'
}
data = {
"grant_type": "client_credentials",
"client_id" :"<client_id>",
"client_secret": "<client_secret>",
"resource": "https://graph.microsoft.com"
}
r = requests.post('<token_address>', headers=headers, data=data)
print(r.text)
我通过x-www-form-urlencoded在Postman中工作,但似乎无法在Python中工作。它返回请求主体必须包含以下参数:'grant_type'。我意识到问题可能与需要转换的数据有关,但是我不确定从哪里开始。
答案 0 :(得分:3)
您在请求中发送了一些无效的标头:
Content-Type
应该是application/x-www-form-urlencoded
,而不是x-www-form-urlencoded
。Authorization
标头。 从技术上讲,由于requests.post
以默认编码形式发送数据,因此您可以安全地从请求中删除headers
:
payload = {
'grant_type': 'client_credentials',
'client_id': '<client_id>',
'client_secret': '<client_secret>',
'resource': 'https://graph.microsoft.com',
}
r = requests.post('https://login.microsoftonline.com/common/oauth2/token', data=payload)
print(r.text)
答案 1 :(得分:0)
我相信OAuth希望该正文经过URL编码,如下所示:
data = "grant_type=client_credentials"
+ "&client_id=<client_id>"
+ "&client_secret=<client_secret>"
+ "&resource=https://graph.microsoft.com"