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

如何通过Microsoft Graph获取用户拥有的所有SharePoint站点?

获取用户作为所有者的SharePoint站点(Microsoft Graph)

你之前使用的 https://graph.microsoft.com/v1.0/sites/microsoft.graph.getAllSites() 方法并不适配你的需求:这个函数用于返回租户内所有站点(需要 Sites.FullControl.All 这类高权限),且不支持直接传入用户标识筛选所有者,所以结果自然不符合预期。

以下是正确的实现方案:

核心查询逻辑

通过 sites 端点结合 $filter 筛选所有者包含目标用户的站点,支持用用户ID、用户主体名(邮箱)作为筛选条件:

1. 按用户ID筛选

GET https://graph.microsoft.com/v1.0/sites?$filter=owners/any(o: o/id eq '{user-id}')&$select=id,name,webUrl

2. 按用户邮箱(用户主体名)筛选

GET https://graph.microsoft.com/v1.0/sites?$filter=owners/any(o: o/userPrincipalName eq '{user-email}')&$select=id,name,webUrl

参数说明

  • 将 {user-id} 替换为目标用户的Azure AD ID(推荐使用ID,比用户名/邮箱更稳定)
  • 将 {user-email} 替换为用户的完整邮箱(如 john.doe@contoso.com)
  • $select=id,name,webUrl 用于指定返回的站点字段,可根据需求添加或移除(如 description、createdDateTime 等)
  • 若需要同时返回站点的所有者信息,可追加 $expand=owners 参数

权限要求

必须确保你的应用或委派权限包含以下至少一项:

  • Sites.Read.All(只读权限,最低要求)
  • Sites.ReadWrite.All(读写权限)
  • 应用权限需要管理员提前同意

额外说明

  • 如果需要获取用户作为站点集管理员的站点(范围比所有者更窄,仅站点集级别的管理员),可使用以下端点:
    GET https://graph.microsoft.com/v1.0/users/{user-id}/sites/siteCollectionsAsAdmin
    
  • 若结果数量较多,Microsoft Graph会返回分页数据,需通过响应中的 @odata.nextLink 继续获取后续结果

内容的提问来源于stack exchange,提问作者Vinícius Martins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:21:02