淄博网站优化资讯,怎么提交网站关键词,厦门室内装修公司,互联网网站 权限大家在使用Graph API开发Teams App的时候#xff0c;有时候会需要获取某个租户Tenant的所有team#xff0c;在写这篇文章的时候Graph API并没有提供这么一个功能#xff0c;没有一个类似于”GET /teams”的api。
在Micorsoft Graph官方文档的已知问题中#xff0c;也提到了…大家在使用Graph API开发Teams App的时候有时候会需要获取某个租户Tenant的所有team在写这篇文章的时候Graph API并没有提供这么一个功能没有一个类似于”GET /teams”的api。
在Micorsoft Graph官方文档的已知问题中也提到了目前不支持这么一个api。
https://docs.microsoft.com/en-us/graph/known-issues?viewgraph-rest-beta#get-teams-is-not-supported
那如果我们开发的app想要获取team列表有其他什么方法吗
我们现在想一下Microsoft Teams中每个team是一个什么概念在AzureAD中一个team实际上就是一个AzureAD中的group。group是可以通过graph api来列举的。实际上在Group中有一个属性叫resourceProvisioningOptions它的定义如下 https://docs.microsoft.com/en-us/graph/group-set-options
Supported values for resourceProvisioningOptionsDescriptionDefault if not setTeamsProvision this group as a team in Microsoft Teams. Additionally, this value can be added to the resourceProvisioningOptions string collection on group update through a PATCH operation, in order to convert an existing Microsoft 365 group to a team.The group is a regular Microsoft 365 group without Teams capabilities.
可以知道原来我们通过这个属性就可以来判断这个group是不是一个Teams里的team。
GET /groups?$selectid,resourceProvisioningOptions这个接口会返回如下的内容
{odata.context: https://graph.microsoft.com/v1.0/$metadata#groups,value: [{id: 00e897b1-70ba-4cb9-9126-fd5f95c4bb78,resourceProvisioningOptions: []},{id: 00f6e045-f884-4359-a617-d459ee626862,resourceProvisioningOptions: [Team]}]
}可以发现第一个group不是team第二个group是因为第二个group的 resourceProvisioningOptions 里含有 Team。
看到这里大家可能会问一个租户里的group有很多我如果拿到了所有的group再自己过滤是不是有点浪费。有没有更好的方法来直接返回所有的team
有我们需要借助方便的OData查询语法如下
GET /groups?$filterresourceProvisioningOptions/Any(x:x eq Team)上面这个调用就可以返回租户中的所有的team实际上就是 GET /teams 要做的东西了。注意上面的 $filter 的表达式如果大家想具体深入的学习这些查询条件的语法可以查看这个文档学会了后你会觉得使用graph api原来如此方便。可以把很多原来需要在查询端做的事情都让graph api服务来完成。
https://docs.microsoft.com/en-us/graph/query-parameters#filter-parameter