图 API 多个用户的日历 getSchedule

Graph API Calendar getSchedule for mulitple users

使用 MS Graph SDK,我想为多个用户检索计划的日历项目(确认单个查询的最大用户数为 20)。但是,我很难理解 RequestBuilder 的结构。这是我的代码:

List<string> users = new List<String>()
                {
                "userA@tst.xyz",
                "userB@tst.xyz"
                };

ICalendarGetScheduleCollectionPage result = await graphClient
            .Users["userA@tst.xyz"]
            .Calendar
            .GetSchedule(users, endTime, startTime, 15)
            .Request()
            .Header("Prefer", "outlook.timezone=\"Pacific/Auckland\"")
            .PostAsync();

我似乎必须有一个默认用户并将其包含在 .Users["userA@tst.xyz"] 中,然后将它们和我想要的所有其他用户包含在我的 List<string> users 中。那是对的吗?这对我来说似乎不合逻辑,这让我怀疑我的理解不正确。

.User["user_principal"] 中的参数意味着您将以该用户的名义执行查询,但它总是没有意义,因为您使用的是客户端凭据。我认为这里只代表Me的对立面。 microsoft graph中有一种格式api,我们平时查询某人的信息都是用.User["user_principal"],只是在这种场景下没用。

对于 GetSchedule,此处使用的用户 ID 表示此查询将搜索这些用户的可用性信息。

============================================= ======

关于“getSchedule”功能请参考this document

POST /me/calendar/getSchedule

POST /users/{id|userPrincipalName}/calendar/getSchedule

你可以看到这张图api提供了2个选项,一个是client.Me.Calendar,另一个是client.User[userPrincipalName].Calendar

这意味着您可以使用您自己的帐户获得“GetSchedule”响应(您在 auth code/ROPC 流程中获得凭据,需要您提供用户信息,以便凭据可以知道您是谁并可以使用请求中的“我”)或来自特定帐户(使用例如 clientcredential 流,以便您有权通过使用 User[userPrincipalName] 访问所有用户)。