首页 > 解决方案 > 使用 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

标签: microsoft-graph-api

解决方案


如此所述,您不需要 v2-auth 的资源参数(您可以从错误消息中读取)。但是根据文档,您缺少什么并且是必需的:


scope
必需
此请求中传递给范围参数的值应该是您想要的资源的资源标识符(应用程序 ID URI),并附加 .default 后缀。对于 Microsoft Graph,该值为https://graph.microsoft.com/.default。此值通知 Microsoft 标识平台终结点,在您为应用配置的所有应用程序权限中,它应该为与您要使用的资源关联的权限颁发令牌。



推荐阅读