如何在 MS Graph C# 中获取所有团队?
How do I get all Teams in MS Graph C#?
我已经成功在群组中创建了一个Team,现在我需要循环遍历这些Team,以便我可以得到他们的名字和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'."
}
我也尝试过对群组进行同样的操作但没有成功:
var groups = await graphServiceClient.Groups
.Request()
.GetAsync();
foreach (var group in groups)
{
Console.WriteLine(group.DisplayName);
Console.WriteLine(group.Team.Id);
}
现在我得到了群组的 displayName
,但是在尝试访问群组的团队 ID 时我得到了
Object reference not set to an instance of an object.
编辑:
我已经意识到组 ID = 团队 ID,但是,上周我能够使用以下命令更新特定团队:
await graphServiceClient
.Teams[groupID]
.Request()
.UpdateAsync(team3);
但现在它不起作用并说:
No team found with Group Id {9032fa63-50bb-4....}
我已经在 PowerShell 和 Graph Explorer 中确认 ID 是正确的,正如我所说,它在上周的星期五工作。
我正在使用等于 teamID 的 groupID。
var groups = await graphServiceClient.Groups.Request().GetAsync();
foreach (var group in groups)
{
Console.WriteLine(group.DisplayName);
Console.WriteLine(group.Id);
}
根据我的评论,PageIterator class 似乎不适用于返回的组集合(或者我做错了什么,这是可能的!)。无论如何,此代码适用于在我的环境中获取所有带有 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 中不可用。
我已经成功在群组中创建了一个Team,现在我需要循环遍历这些Team,以便我可以得到他们的名字和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'."
}
我也尝试过对群组进行同样的操作但没有成功:
var groups = await graphServiceClient.Groups
.Request()
.GetAsync();
foreach (var group in groups)
{
Console.WriteLine(group.DisplayName);
Console.WriteLine(group.Team.Id);
}
现在我得到了群组的 displayName
,但是在尝试访问群组的团队 ID 时我得到了
Object reference not set to an instance of an object.
编辑:
我已经意识到组 ID = 团队 ID,但是,上周我能够使用以下命令更新特定团队:
await graphServiceClient
.Teams[groupID]
.Request()
.UpdateAsync(team3);
但现在它不起作用并说:
No team found with Group Id {9032fa63-50bb-4....}
我已经在 PowerShell 和 Graph Explorer 中确认 ID 是正确的,正如我所说,它在上周的星期五工作。
我正在使用等于 teamID 的 groupID。
var groups = await graphServiceClient.Groups.Request().GetAsync();
foreach (var group in groups)
{
Console.WriteLine(group.DisplayName);
Console.WriteLine(group.Id);
}
根据我的评论,PageIterator class 似乎不适用于返回的组集合(或者我做错了什么,这是可能的!)。无论如何,此代码适用于在我的环境中获取所有带有 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 中不可用。