c# - 如何在 MS Graph C# 中获取所有团队?
问题描述
我已成功在组中创建了一个团队,现在我需要循环浏览这些团队,以便获取他们的名称和 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 是正确的,并且正如我所说,它在上周的星期五工作。
解决方案
根据我的评论,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 中不可用。
推荐阅读
- r - 将文本转换为数字?
- azure - Azure Site Recovery 保证 Azure 到 Azure 故障转移的恢复时间目标为两小时。对于任何类型的工作负载?
- jquery - 使用不带特殊字符 + 验证格式的日期输入创建一个 from
- python - 如果找到匹配,如何比较数据框中的两列并返回相应的记录?
- ios - 从 Swift 3 更新项目时的便利初始化错误
- azure-api-management - Azure API 管理在 API 终结点级别限制多个调用方 IP 地址 API
- android - 我正在开发用于跟踪用户活动的应用程序。我每隔 5 秒将他的 latlngs 存储到 db 中,稍后我想向用户展示他走过的路线
- java - 如何将 JAAS-J2C 身份验证数据从 Websphere 迁移到 Liberty
- javascript - 如何按分钟循环两个 DateTime?JavaScript
- javascript - 当 return new Promise((resolve, reject) => {}) 忘记调用resolve或reject时会发生什么?