对日历进行Graph API调用时禁用对OData的访问&&q;错误

我有一个从ServiceNow到Office 365的演示集成,上次我检查时一切正常(那是几天前)。我通过两种方式设置它(使用两个身份验证流):

  1. 授权码-这仍然工作正常。

  2. 客户端凭据-现在,当我尝试访问任何日历时,这会给我一个错误。应用程序已注册,权限在那里:

尝试运行getSchedule API时,收到以下响应:

"error": {
    "code": "ErrorAccessDenied",
    "message": "Access to OData is disabled.",
    "innerError": {
      "request-id": "e14a6800-ed63-4692-9934-cc0ec009d93b",
      "date": "2020-03-16T14:43:34"
    }
}

我找遍了我能查到的每一个地方。生成访问令牌。这肯定与日历的Graph API有关。


解决方案

问题与应用程序访问策略有关。

基本上,如果您在Microsoft 365的OAuth中使用应用程序权限,则可以使用以下说明进一步缩小权限范围: https://docs.microsoft.com/en-us/graph/auth-limit-mailbox-access

Microsoft Graph应用程序权限(您可能不需要 他们):

  • 邮件.Read
  • Mail.ReadBasic
  • Mail.ReadBasic.All
  • Mail.ReadWrite
  • 邮件发送
  • MailboxSettings.Read
  • MailboxSettings.ReadWrite
  • 日历。阅读
  • 日历.ReadWrite
  • 合同。阅读
  • Contacts.ReadWrite

有关配置应用程序访问策略的详细信息,请参阅New-ApplicationAccessPolicy的PowerShell cmdlet参考。

处理API错误

API调用被拒绝时可能会遇到以下错误 由于配置的应用程序访问策略而进行访问。

{
"error": {
    "code": "ErrorAccessDenied",
    "message": "Access to OData is disabled.",
    "innerError": {
        "request-id": "<request GUID is here>",
        "date": "<UTC date format here>"
    }
}
如果应用程序中的Microsoft Graph API调用返回此错误,请执行以下操作 与组织的Exchange Online管理员联系以确保 您的应用程序有权访问邮箱资源。

在我们的案例中,其中一个策略似乎没有正确删除/更新。删除与此集成相关的所有策略后,它再次开始工作。

相关文章