python - Python 请求 Microsoft Graph API 身份验证
问题描述
我在使用 Python 为 Microsoft Graph API 接收不记名令牌时遇到问题。这是我到目前为止所拥有的:
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'。我意识到问题可能与需要转换的数据有关,但我不确定从哪里开始。
解决方案
您在请求中发送了一些无效的标头:
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)
推荐阅读
- performance - 根据 google SRE book 的 SLO 合规性报告
- c# - Identity Server 4 (Asp.net core) - 重定向 Uri 验证问题
- bing-maps - 必应地图街景不只显示道路地图显示
- c# - 如何在 Unity 中动画线渲染平铺纹理
- c++ - 孩子中的大括号或相等初始化器默认值似乎不起作用
- sql - 如何在 Google 表格中使用 SQL 查询按子字符串分组
- node.js - Node.js 速率限制器身份验证令牌而不是 IP 地址
- arrays - 如何随机选择一个变量并找到它的属性
- css - 防止 flex 容器溢出视口
- scrapy - Scrapy 提取特定数据