You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Microsoft Teams团队关联的SharePoint网站集及权限信息?

获取Teams关联的SharePoint站点及权限检查方案

1. 精准获取团队专属的SharePoint站点

你之前调用Groups[group.Id].Sites.GetAsync()返回多个站点,是因为Office 365组可能关联多个服务的站点(比如Planner、Forms),但Teams对应的是团队主站点,用以下两种方式直接获取:

方式一:通过Group节点获取根站点

var teamSite = await graphClient.Groups[group.Id].Sites["root"].GetAsync();

这个根站点就是Teams团队默认绑定的SharePoint站点,团队的所有文件都存在这个站点的文档库中。

方式二:通过Team节点直接关联

如果已经拿到Team对象,也可以直接从Team获取站点:

var teamSite = await graphClient.Teams[team.Id].Sites["root"].GetAsync();

两种方式效果完全一致,选哪种都可以。

2. 遍历文件夹结构与文件列表

Teams的文件默认存在站点的"Shared Documents"文档库(显示名称通常是"Documents"),可以通过两种方式访问:

方式一:通过Site的List访问

// 获取站点的默认文档库
var documentLibrary = await graphClient.Sites[teamSite.Id].Lists["Shared Documents"].GetAsync();
// 获取库的根文件夹
var rootFolder = await graphClient.Sites[teamSite.Id].Lists[documentLibrary.Id].RootFolder.GetAsync();
// 获取根文件夹下的所有子文件夹和文件
var folderChildren = await graphClient.Sites[teamSite.Id].Drives[documentLibrary.DriveId].Root.Children.GetAsync();

方式二:直接通过Group的Drive访问

Office 365组的Drive就是对应Teams的文件库,更直接:

var teamDrive = await graphClient.Groups[group.Id].Drive.GetAsync();
// 获取根目录下的所有内容
var driveItems = await graphClient.Drives[teamDrive.Id].Root.Children.GetAsync();

3. 检查成员与文件/文件夹权限

团队基础权限(组角色)

Teams的成员权限对应Office 365组的角色(所有者/成员/访客),直接获取组的成员和所有者即可:

// 获取所有成员
var groupMembers = await graphClient.Groups[group.Id].Members.GetAsync();
// 获取所有所有者
var groupOwners = await graphClient.Groups[group.Id].Owners.GetAsync();

站点级细粒度权限

如果需要查看SharePoint站点的具体权限分配(比如自定义权限组):

var sitePermissions = await graphClient.Sites[teamSite.Id].Permissions.GetAsync();
foreach (var permission in sitePermissions.Value)
{
    // 权限对应的用户/组
    var grantedIdentities = permission.GrantedToIdentities;
    // 权限级别(如Full Control、Edit、Read等)
    var roles = permission.Roles;
}

文件/文件夹的单独权限

针对某个特定的文件夹或文件,获取其专属权限:

// 替换为目标文件/文件夹的DriveItem ID
var targetItemId = "xxxxxx";
var itemPermissions = await graphClient.Drives[teamDrive.Id].Items[targetItemId].Permissions.GetAsync();
foreach (var permission in itemPermissions.Value)
{
    var grantedTo = permission.GrantedToIdentities;
    var roles = permission.Roles;
}

内容的提问来源于stack exchange,提问作者Martin H.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:17:09