SharePoint REST API访问令牌未返回所有站点

问题描述 投票:0回答:1

我正在尝试使用Sharepoint加载项应用程序的访问令牌来获取Sharepoint Online中的所有站点。当我这样做时,在管理门户中查看所有站点时,我只能看到35个站点中的17个。

还值得注意的是,当我使用azure应用程序中的访问令牌时,进行相同的调用后,我将获得所有应用程序。

有什么区别?如何使用共享点令牌获取所有站点?

这是管理门户链接,在这里我可以看到所有站点:

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

UPDATE:

使用client_credentials access_token似乎可以访问我所有的站点,而authorization_code access_token却没有...代码流通常更好,理想情况下我会使用它,但是考虑到应用程序的配置,在这里没有意义?

azure sharepoint sharepoint-online sharepoint-rest-api
1个回答
0
投票

我相信我了解问题所在:

我们正在尝试将OAuth代码流(“ authorization_code” grant_type)用于该应用。 Sharepoint支持此功能,但是以这种方式请求访问时不支持“ FullControl”权限。因此,我们一直在保留“管理”权限。使用“管理”权限时,我们实际上是在减少权限。这使我们无法调用以下路径:/ _api / web / roleassignments

当切换为使用client_credentials流时,我们开始看到与Azure应用程序的access_token相同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.