0

使用 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. 那是对的吗?这对我来说似乎不合逻辑,这让我怀疑我的理解是不正确的。

4

1 回答 1

0

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

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

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

请参阅此文档以了解“getSchedule”功能。

发布/我/日历/getSchedule

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

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

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

于 2021-11-15T09:15:16.690 回答