使用MS Graph获取SPO租户站点列表返回空数组问题咨询
问题解答
核心问题:权限不匹配
你当前请求的User.ReadBasic.All权限仅用于读取用户基本信息,完全没有访问SharePoint站点数据的权限,这才是调用/api('sites')返回空数组的根本原因——Graph API因权限不足,会返回空结果而非报错(这是隐私安全层面的设计)。
关于/api('sites')的写法
调用api('sites')或api('/sites')的写法是正确的,SPFx的Graph客户端会自动处理路径拼接,和api('users')的写法逻辑一致,不存在语法错误。
所需权限配置
要读取租户所有站点数据,需要在SPFx权限配置中添加以下Graph权限之一:
Sites.Read.All:只读权限(推荐使用)Sites.ReadWrite.All:读写权限(仅当需要修改站点时才需配置)
添加权限后需租户管理员重新审批,权限生效后即可正常获取站点数据。
补充:精准获取中心站点
如果需要专门获取所有中心站点,可在请求中添加筛选条件(中心站点的根模板ID为68):
this.context.graphClient.api('/sites').filter("siteCollection/rootTemplate eq 68").get();
补充:获取子站点
要获取某个站点的所有子站点,需先获取目标站点ID,再调用:
this.context.graphClient.api(`/sites/${siteId}/sites`).get();
内容的提问来源于stack exchange,提问作者NightTom
相关产品推荐
相关产品推荐

