microsoft-graph-api - 使用 v2.0 和 v1.0 的 Mircosoft Graph API 身份验证令牌
问题描述
$LoginUrl = "https://login.microsoft.com"
$Tenantname = "xxxx"
$Body = @ {
client_id = "xxxx"
client_secret = "xxxx"
resource = "https://graph.microsoft.com"
grant_type = "client_credentials"
}
$oauth = Invoke-RestMethod -Method Post -Uri $LoginUrl/$Tenantname/oauth2/v2.0/token -Body $Body
以上是我获取 Graph API 令牌的身份验证,应用程序注册已完成。当我使用 v2.0 作为令牌时出现以下错误。
Invoke-RestMethod: {"error":"invalid_request","error_description":"AADSTS901002: The 'resource' request parameter is not supported" ......}
但是,当我在下面使用时,我可以运行它,我从网站上搜索。我很困惑哪里出了问题,为什么低于 v1.0 是有效的。
$oauth = Invoke-RestMethod -Method Post -Uri $LoginUrl/$Tenantname/oauth2/token?api-version=1.0 -Body $Body
解决方案
如此处所述,您不需要 v2-auth 的资源参数(您可以从错误消息中读取)。但是根据文档,您缺少什么并且是必需的:
scope
必需
此请求中传递给范围参数的值应该是您想要的资源的资源标识符(应用程序 ID URI),并附加 .default 后缀。对于 Microsoft Graph,该值为https://graph.microsoft.com/.default。此值通知 Microsoft 标识平台终结点,在您为应用配置的所有应用程序权限中,它应该为与您要使用的资源关联的权限颁发令牌。
推荐阅读
- spring - Spring data JDBC,我可以在自定义插入查询中将返回值作为实体获取吗?
- c++ - 在 C++ 中通过以太网进行 UR5 通信
- dialogflow-es - DialogFlow 中针对一个意图的多个链接出建议
- netcat - 使用 masked_array 时如何从我的降水数据中保持相同的单位?
- javascript - 雪花 UDF 和数据加密
- mysql - 从 INNER JOIN 特定的 id 更新,但都已更新
- node.js - create-react-app,构建结果很大,超过 2MB
- javascript - 剑道网格禁用列进行编辑
- php - 在循环中执行 php 网页(脚本)
- ssas - 我需要有关 SSAS 多维数据集的信息