我正在尝试使用 Sharepoint 加载项应用程序的访问令牌获取 Sharepoint Online 中的所有站点。当我这样做时,在查看管理门户中的所有站点时,我只能看到 35 个站点中的 17 个。
还值得注意的是,当我使用来自 azure 应用程序的访问令牌时,进行相同的调用时,我会得到所有应用程序。
有什么区别?如何使用 sharepoint 令牌获取所有站点?
这是我可以看到所有站点的管理门户链接:
https://<MY-TENANT>-admin.sharepoint.com/_layouts/15/online/AdminHome.aspx#/siteManagement
这是我创建 Sharepoint 应用程序的地方:
https://<MY-TENANT>-admin.sharepoint.com/_layouts/15/appregnew.aspx
这是我给它的权限:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl"/>
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl"/>
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl"/>
</AppPermissionRequests>
对于正在工作的 Azure 应用程序,我在 azure 门户中注册了该应用程序并分配了以下权限:
MS GRAPH API:
Profile
Sites.FullControl.All
Group.ReadWrite.All
SHAREPOINT API:
Sites.FullControl.All
TermStore.Read.All
User.ReadWrite.All
我在这两种情况下使用的相同的休息电话是:
https://<MY-TENANT>.sharepoint.com/_api/search/query?querytext='contentclass:STS_Site%20contentclass:STS_Web'&selectproperties='UniqueId,Title,SiteName,Path,Description,contentclass'&startrow=0&rowlimit=100
更新:
使用 client_credentials access_token 似乎给了我所有的网站,而 authorization_code access_token 没有......代码流通常更好,理想情况下我会使用它,但也许考虑到应用程序的配置它在这里没有意义?