Azure 当通过客户端凭据OAuth流请求Microsoft Graph日历资源时,ErrorAccessDenied

Azure 当通过客户端凭据OAuth流请求Microsoft Graph日历资源时,ErrorAccessDenied,azure,graph,oauth-2.0,office365,microsoft-graph-api,Azure,Graph,Oauth 2.0,Office365,Microsoft Graph Api,我需要在服务器到服务器的环境中通过MicrosoftGraphAPI访问资源室的事件,所以几个月前我遵循了指南。我创建了应用程序,设置了所需的与日历相关的应用程序权限,并使用管理员帐户成功地同意了这些权限。现在一切都正常工作了3-4个月,没有任何问题 但是,在没有更改任何内容之后,今天我从/v1.0/users/{resource room email}/events端点得到了此响应: { "error": { "code": "ErrorAccessDenied", "me

我需要在服务器到服务器的环境中通过MicrosoftGraphAPI访问资源室的事件,所以几个月前我遵循了指南。我创建了应用程序,设置了所需的与日历相关的应用程序权限,并使用管理员帐户成功地同意了这些权限。现在一切都正常工作了3-4个月,没有任何问题

但是,在没有更改任何内容之后,今天我从
/v1.0/users/{resource room email}/events
端点得到了此响应:

{
  "error": {
    "code": "ErrorAccessDenied",
    "message": "Access is denied. Check credentials and try again.",
    "innerError": {
      "request-id": "952955b5-562e-4fa6-8b0f-e381c8294fcd",
      "date": "2017-09-06T03:09:49"
    }
  }
}
这似乎是一个权限问题,因为
/v1.0/users/{resource room email}/messages
端点可以很好地返回资源室的消息(假设设置了权限)

如果我按照前面链接的指南使用CURL,我可以复制这个问题

获取令牌:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d 'client_id=XXXXXX-XXXX-XXXX-XXXX-XXXXXXX&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=XXXXXXXXX&grant_type=client_credentials' \
'https://login.microsoftonline.com/{my tennant URL}/oauth2/v2.0/token'
尝试获取以下事件:

curl -X GET -H "Authorization: Bearer {token}" 'https://graph.microsoft.com/v1.0/users/{resource room email}/events'
我收到了与上面相同的错误

是否有我不知道会破坏此功能的更改?
谢谢你的帮助。

Hmm,在文档中它看起来应该是
/users/{id | userPrincipalName}/calendar/events
。您还应该检查JWT是否包含角色Calendars.Read。感谢您的反馈,尽管我列出的“资源室电子邮件”是文档中指定的“id”。不管怎样,这看起来像是微软的一个Bug,因为在4个小时后运行完全相同的代码时,一切都正常了。:D很好,它被解决了。嗯,在文档中,它看起来应该是
/users/{id | userPrincipalName}/calendar/events
。您还应该检查JWT是否包含角色Calendars.Read。感谢您的反馈,尽管我列出的“资源室电子邮件”是文档中指定的“id”。不管怎样,这看起来像是微软的一个Bug,因为在4小时后运行完全相同的代码时,一切都正常工作。:D很好,问题解决了。