如何使用Microsoft Graph API获取SharePoint组(非AD组)
当然有办法实现!你之前调用的/groups端点确实是用来获取Azure AD全局组的,而SharePoint站点专属的组需要通过站点级的特定端点来获取,下面是具体的操作指南:
1. 核心调用端点
要获取指定SharePoint站点下的所有组,直接使用v1.0稳定版的端点(优先选择稳定版,beta版本可能存在变动):
GET https://graph.microsoft.com/v1.0/sites/{site-id}/siteGroups
这里的{site-id}可以是你通过https://graph.microsoft.com/v1.0/sites/{id}获取到的站点ID,也可以通过站点域名+相对路径的方式构造(比如contoso.sharepoint.com:/sites/Marketing或者类似contoso.sharepoint.com,abc123-def456-ghi789-jkl012-mno345的格式)。
如果需要获取单个特定的SharePoint组,使用:
GET https://graph.microsoft.com/v1.0/sites/{site-id}/siteGroups/{group-id}
注意:这里的{group-id}是SharePoint组自身的ID,并非Azure AD组的ID。
2. 权限配置要求
你需要在Azure AD应用中配置对应的权限,确保请求令牌包含所需权限:
- 用户上下文(Delegated权限):
Sites.Read.All或Sites.ReadWrite.All - 服务上下文(Application权限):
Sites.Read.All或Sites.ReadWrite.All
配置完成后记得完成授权流程,保证请求能正常通过权限校验。
3. 响应示例
调用成功后,会返回包含站点组关键信息的JSON响应,格式如下:
{ "value": [ { "id": "1", "displayName": "Site Owners", "description": "拥有站点完全控制权限", "loginName": "contoso\\SPMarketingOwners", "roles": ["FullControl"] }, { "id": "2", "displayName": "Site Members", "description": "拥有站点编辑权限", "loginName": "contoso\\SPMarketingMembers", "roles": ["Edit"] } ] }
关键区别说明
要注意区分两个端点的差异:/groups返回的是Azure AD全局组,这类组会在整个租户内生效;而/sites/{site-id}/siteGroups返回的是SharePoint站点专属组——这些组可能仅存在于当前站点内部,不会同步到Azure AD(比如传统的经典SharePoint组)。
内容的提问来源于stack exchange,提问作者Aswathy Santhosh
相关产品推荐
相关产品推荐

