如何使用Microsoft Graph获取非本人Outlook日历信息无需提前关联
问题解答
Microsoft Graph完全支持无需提前关联目标日历即可获取指定非本人用户的日历信息,具体实现方案如下:
1. 核心调用逻辑
你之前使用的/me前缀接口仅适配当前登录用户的资源访问,要访问其他用户的日历,只需要将接口前缀替换为/users/{目标用户标识}即可,目标用户标识支持填写用户的Azure AD用户ID,或是用户的主体名称(通常为企业邮箱地址)。
对应的日历视图查询接口为:
GET /users/{targetUserIdOrUPN}/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
2. 权限配置要求
根据你的应用场景,需要在Azure AD应用注册中为你的程序配置对应权限:
- 委托权限场景(有用户登录使用的前端/客户端应用)
申请Calendars.Read.Shared(仅读取)或Calendars.ReadWrite.Shared(读写)委托权限,权限需要租户管理员统一同意。
该场景下接口返回的内容范围对齐当前登录用户在Exchange中拥有的目标用户日历权限:默认组织内用户可查询其他用户的忙闲状态,若要查看事件的标题、地点等详细内容,需要目标用户主动为当前用户开放日历的详细信息查看权限。 - 应用权限场景(无用户登录的后台服务类应用)
申请Calendars.Read(仅读取)或Calendars.ReadWrite(读写)应用权限,必须由租户全局管理员同意。
该场景下你的应用可以访问租户内所有用户的日历数据,无需单独获取目标用户授权,适合批量调度、集中管理类的业务场景。
3. 补充说明
如果需要为目标用户直接创建预约,可使用POST /users/{targetUserIdOrUPN}/events接口,权限要求和上述日历查询的权限要求一致。
内容的提问来源于stack exchange,提问作者michaelascend
相关产品推荐
相关产品推荐

