如何通过事件ID使用Microsoft Graph API获取已删除Outlook事件详情
可以用Graph API获取已删除的日历事件,无需依赖EWS
你遇到的问题很常见——默认的/me/events/{event-id}端点确实查不到已删除的事件,因为它们已经不在常规的日历文件夹里了。不过Graph API提供了专门的路径来访问已删除的日历项,完全不需要退回到EWS(而且EWS已经被微软标记为弃用,推荐优先用Graph)。
核心思路:访问已删除项目文件夹里的事件
已删除的日历事件会被移动到用户的**已删除项目(Deleted Items)**文件夹中,Graph API提供了直接访问这个文件夹内事件的端点。
1. 所需权限
确保你的应用已获得以下权限之一(根据场景选择委托/应用权限):
Calendars.Read(只读访问)Calendars.ReadWrite(读写访问)
2. 查询特定已删除事件
如果你已经从Webhook通知中拿到了事件ID,直接用下面的端点查询即可:
GET https://graph.microsoft.com/v1.0/me/deletedItems/{event-id}
或者更明确地指定类型(避免和其他已删除项目混淆):
GET https://graph.microsoft.com/v1.0/me/deletedItems/microsoft.graph.event?$filter=id eq '{event-id}'
3. 处理可能的查询问题
如果遇到查询不到的情况,试试这两个技巧:
- 添加请求头
ConsistencyLevel: eventual:已删除项目的索引可能有短暂延迟,这个头会确保Graph返回最新的状态。 - 确认事件是软删除:如果事件被永久删除(比如从已删除项目中再次删除,或者超过组织的保留期),Graph API也无法获取,这种情况需要联系管理员查看合规性存档(如果有配置)。
4. 关于EWS的说明
完全不需要依赖EWS了——Graph API的已删除项目端点已经覆盖了EWS中获取已删除日历事件的功能,而且微软已经宣布EWS将于2026年停用,建议尽快迁移到Graph。
举个实际测试的例子:在Graph Explorer中登录后,发送GET https://graph.microsoft.com/v1.0/me/deletedItems/microsoft.graph.event,就能看到所有你最近删除的日历事件,包含完整的详情(标题、时间、参与者等)。
内容的提问来源于stack exchange,提问作者user8947735
相关产品推荐
相关产品推荐

