Microsoft Graph API:授权未找到

2024-09-27 00:12:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我按照Get access without a user指南编写一个Python脚本,它将调用microsoftgraph。在

此脚本将从cron计划,因此它无法获得管理员同意(因此使用客户端凭据进行授权)。我可以使用此调用成功获取令牌:

request_url = "https://login.microsoftonline.com/mytenant.onmicrosoft.com/oauth2/v2.0/token"
data = { 
   'Host' : 'login.microsoftonline.com',
   'Content-Type' : 'application/x-www-form-urlencoded',
   'client_id' : 'my-client-id-1234',
   'scope' : 'https://graph.microsoft.com/.default',
   'client_secret' : client_secret,
   'grant_type' : 'client_credentials'
}
response = requests.post(url = request_url, data = data)

然后,我尝试使用有效的令牌获取此调用的用户列表:

^{pr2}$

问题是我得到了一个Authorization_IdentityNotFound错误:

<Response [401]>
{
   "error": {
      "code": "Authorization_IdentityNotFound",
      "message": "The identity of the calling application could not be established.",
      "innerError": {
         "request-id": "2257f532-abc4-4465-b19f-f33541787e76",
         "date": "2018-03-27T19:11:07"
      }
   }
}

以下是我选择的权限:

graphPermsScreenshot

你知道怎么修正这个错误吗?在


Tags: https脚本comclientidurldatasecret
2条回答

对于遇到此问题的其他人,我也遇到了这个错误,直到发现文档忽略了一个非常重要的警告:

  • 对于客户端凭据,如果应用程序属于工作或学校(组织)上下文,则对于https://login.microsoftonline.com/common/oauth2/token请将common替换为tenantId或域名

看到了吗 Authorization_IdentityNotFound on Microsoft Graph API request

首先,您可以继续删除所有这些委托的权限范围。如果使用客户端凭据授予,则只能使用应用程序权限范围。在

其次,在使用客户端凭据之前,您需要执行管理员同意流。这是通过让租户的全局管理员进行身份验证并接受您的作用域请求来完成的:

https://login.microsoftonline.com/common/adminconsent?client_id=[APPLICATION ID]&redirect_uri=[REDIRECT URI]

您可以在这里阅读有关管理员同意的更多信息:v2 Endpoint and Admin Consent

相关问题 更多 >

    热门问题