我正在尝试使用 MS 图形 API 的订阅功能来收听日历中的更改。我的应用程序对 Azure 中设置的所有用户都具有 Calendars.ReadWrite 权限,并且使用我为我的应用程序获得的访问令牌的所有用户都可以很好地读取和写入日历事件。但是,当调用 POST /subscriptions 端点以订阅一个用户日历中的更改时,我得到“对 OData 的访问被禁用”。
POST https://graph.microsoft.com/v1.0/subscriptions
{
"changeType": "created,updated",
"notificationUrl": "https://...my.endpoint...",
"resource": "users/someone%40somedomain.com/events",
"expirationDateTime": "2021-10-27T20:09:25.025Z",
"clientState": "foo"
}
这给出了以下错误:
"code": "ExtensionError",
"message": "Operation: Create; Exception: [Status Code: Forbidden; Reason: Access to OData is disabled.]"
根据文档,此端点只需要与订阅实体相同的权限,在我的情况下是Calendars.Read
.
这可能是什么原因造成的?如何进一步调试以了解我收到此错误的原因?我发现一些页面建议使用 PowerShell 来修改 ApplicationAccessPolicy。这是否相关,是否只能通过 PowerShell 实现?为什么会有只能通过 PowerShell 而不能通过 Azure 控制台访问的晦涩策略?