调用 POST 到 https://graph.microsoft.com/v1.0/me/events 不起作用

问题描述

我今天大部分时间都在尝试搜索,但没有找到问题的根源。我注册一个应用并根据需要复制了 id 以调用 Microsoft Graph API。

在向 users/xxxxxxx-f192-4758-xxxx-3f1c27ee5ef9/events 发出 GET 调用时,我确实在日历中取回了我的所有事件。

但问题是,当使用以下数据对我/事件进行 POST 调用时:

t

我收到一个 HTTP/1.1 403 Forbidden Forbidden 返回的“https://graph.microsoft.com/v1.0/me/events”。我已确保 Calendars.ReadWrite 的 API 权限确实存在并且也已授予同意(甚至重做以查看是否有所不同)

请告知我哪里出错了?

谢谢

解决方法

问题可能是由于您在Application类型(但不是Delegated类型)中分配了权限Calendars.ReadWrite,并且您使用客户端凭据流进行身份验证.由于客户端凭据流不需要您输入用户名和密码,因此访问令牌将不包含用户信息。当您请求 api https://graph.microsoft.com/v1.0/me/events 时,api 后端不知道 me 是谁。所以它显示了 403 错误消息。

为了解决这个问题,你可以在你的请求api中使用“me”的对象id替换me。喜欢POST https://graph.microsoft.com/v1.0/{user object id}/events