1

我已成功在组中创建了一个团队,现在我需要循环浏览这些团队,以便获取他们的名称和 ID。

我尝试了以下代码,但没有任何成功。

IGraphServiceTeamsCollectionPage teams = graphServiceClient
    .Teams
    .Request()
    .GetAsync()
    .Result;

foreach (Team team in teams)
{
    Console.WriteLine(team.Id);
}

我明白了

Code: UnknownError
Message: 
{
    "message":"No HTTP resource was found that matches the request URI 'https://api.teams.skype.com/v1.0/teams'."
}

我也尝试过对 Groups 做同样的事情,但没有成功:

var groups = await graphServiceClient.Groups
    .Request()
    .GetAsync();

foreach (var group in groups)
{
    Console.WriteLine(group.DisplayName);
    Console.WriteLine(group.Team.Id);
}

现在我得到了displayName组的,但是当我试图访问组的团队 ID 时,我得到了

你调用的对象是空的。

编辑:

我已经意识到 Group ID = Teams ID,但是,上周我能够使用以下命令更新特定团队:

await graphServiceClient
    .Teams[groupID]
    .Request()
    .UpdateAsync(team3);

但现在它不起作用并说:

未找到组 ID 为 {9032fa63-50bb-4....} 的团队

我已经在 PowerShell 和 Graph Explorer 中确认 Id 是正确的,并且正如我所说,它在上周的星期五工作。

4

2 回答 2

1

根据我的评论,PageIterator 类似乎不适用于返回的组集合(或者我做错了什么,这是可能的!)。无论如何,此代码适用于在我的环境中使用 Teams 获取所有组,因此您应该能够将每个组的 Id 属性传递给 Graph 中的 Teams 端点以继续:

var groups = await client.Groups.Request().Select("id,displayName,resourceProvisioningOptions").Filter("resourceProvisioningOptions/Any(x:x eq 'Team')").GetAsync();
do
{
    foreach(var g in groups)
        {
            Console.WriteLine(g.DisplayName);
            Console.WriteLine(g.Id);
        }
        if(groups.NextPageRequest != null)
        {
            groups = await groups.NextPageRequest.GetAsync();
        }
}
while (groups.NextPageRequest != null);

请注意,过滤资源配置选项需要使用 Graph 中的 Beta 端点,这目前在 V1 中不可用。

于 2021-07-06T17:13:14.517 回答
0

我使用的 groupID 等于 teamID。

 var groups = await graphServiceClient.Groups.Request().GetAsync();
 foreach (var group in groups)
 {
   Console.WriteLine(group.DisplayName);
   Console.WriteLine(group.Id);
 }
于 2019-07-16T13:13:43.283 回答