租户范围驱动器搜索

Tenant Wide Drive Search

目前,我们正在遍历租户中的每个 siteid 以使用以下方式搜索给定关键字:

/v1.0/sites/{siteid}/drive/search(q='{search-query}')

在我们的案例中,我们的租户下有 500 多个站点,因此要使用此 API 进行搜索,我们必须传递每个 siteid 并处理结果。

有办法解决这个问题吗?我们可以通过一次 API 调用在整个租户中搜索关键字吗?

目前不支持,Microsoft Graph 不支持像这样跨 site 资源进行搜索。

对于经过身份验证的用户,您可以通过 /me/drive/search(q='{search-query}') 将搜索范围限定为包括任何 items that can access。这与您通过迭代 sites 所做的有点不同,所以我怀疑这不会给您预期的结果(尽管您当然可以而且应该自己确认)。

您更有可能寻找的是 SharePoint Search REST API。您可以通过向看起来像这样的 URI 发出 GET 来使用此 API:

https://{tenant}.sharepoint.com/_api/search/query?querytext='sharepoint'

但是,为了使用此 API,SharePoint 需要一个 access_token

如果您使用的是 v1 端点,这应该非常简单。您需要更新您的应用程序注册以包含 SharePoint API,但一旦完成,您只需刷新现有的 access_token,同时将 resource 切换为 https://{tenant}.sharepoint.com/。这将为您提供一个具有调用 SharePoint API 权限的新令牌。

不幸的是,这不适用于 v2 端点,因为 SharePoint REST API 目前不支持这些令牌。因此,您需要切换到 v1 并强制您的用户重新进行身份验证,这可能更具挑战性。