You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Microsoft Graph API获取Outlook组日历?

解决Microsoft Graph API获取Outlook「组」板块日历的问题

核心概念误区

你调用的/users/{user-id}/calendarGroups接口仅针对个人日历分组(如「我的日历」「其他日历」这类用户自定义或默认的个人日历集合),而Outlook「组」板块显示的日历属于**Microsoft 365组(Unified Groups)**的资源,两者是完全独立的Graph API资源类型,因此通过calendarGroups接口无法获取到目标日历。

正确的API调用方式

1. 获取用户有权访问的所有Microsoft 365组

先确认用户加入的所有Microsoft 365组,筛选出统一组(即Outlook中显示的「组」):

GET /me/memberOf/$/microsoft.graph.group?$filter=groupTypes/any(c:c eq 'Unified')&$select=id,displayName

针对特定用户调用:

GET /users/{user-id}/memberOf/$/microsoft.graph.group?$filter=groupTypes/any(c:c eq 'Unified')&$select=id,displayName

2. 获取指定Microsoft 365组的日历

拿到组ID后,直接调用组日历接口:

GET /groups/{group-id}/calendar

3. 直接获取用户可访问的所有组日历

如果想一次性获取用户有权查看的所有组日历(无需先查组列表),可以筛选共享日历中属于组的部分:

GET /me/calendars?$filter=isShared eq true and owner/emailAddress/address ends with '.onmicrosoft.com'

注:owner/emailAddress/address的筛选规则可根据你的租户域名调整,确保只返回组账户而非个人共享日历。

必要的权限配置

确保你的应用已申请以下权限(根据认证方式选择):

  • Delegated权限:Calendars.Read、Group.Read.All
  • Application权限:Calendars.Read.All、Group.Read.All

权限不足会导致接口返回空数据或权限错误,需在Azure AD应用注册中心确认权限已授予并完成同意流程。

验证建议

先用Graph Explorer测试上述接口,确认能返回目标组和日历数据后,再集成到代码中,排查是否存在权限或参数错误。

内容的提问来源于stack exchange,提问作者Master_T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:01:57