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

使用Microsoft Graph获取共享日历Events始终为null的问题

解决共享日历Events属性为null的问题

你的代码仅获取了日历的基础元数据,MS Graph SDK默认不会自动加载关联的Events属性,这就是共享日历的Events返回null的核心原因。以下是两种可行的解决方式:

方法1:通过$expand同时获取日历及关联事件

修改请求逻辑,添加$expand参数,让接口一次性返回日历及其关联的事件数据:

GraphServiceClient graphClient = new(new AzureAuthenticationProvider());

var calendars = await graphClient.Me.Calendars
    .Request()
    .Expand("events") // 显式展开Events关联属性
    .GetAsync();

执行后,返回的每个Calendar对象中Events属性会填充对应事件数据。

方法2:单独请求指定共享日历的事件

若不需要同时获取所有日历的事件,可先拿到共享日历的ID,再单独发起事件请求:

GraphServiceClient graphClient = new(new AzureAuthenticationProvider());

// 获取所有日历(含共享日历)
var calendars = await graphClient.Me.Calendars.Request().GetAsync();
// 筛选出目标共享日历(示例取第一个共享日历,实际可根据名称/ID筛选)
var targetSharedCalendar = calendars.First(c => c.IsShared == true);
// 请求该日历的事件列表
var sharedCalendarEvents = await graphClient.Me.Calendars[targetSharedCalendar.Id].Events.Request().GetAsync();

额外注意事项

  • 确保你的Bearer令牌包含Calendars.Read或Calendars.ReadWrite权限(Postman能正常访问说明权限已配置正确,需保证SDK使用的令牌权限一致)。
  • 可通过IsShared属性区分共享日历与个人日历,避免操作错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:25:17