目前,我们正在遍历租户中的每个siteid,以使用以下命令搜索给定的关键字:
/v1.0/sites/{siteid}/drive/search(q='{search-query}')在我们的例子中,我们的租户下有超过500个站点,所以为了使用这个API进行搜索,我们必须传递每个siteid并处理结果。
有没有办法解决这个问题?我们可以通过一个API调用在整个租户中搜索关键字吗?
发布于 2018-01-27 23:09:10
目前,Microsoft Graph还不支持像这样跨site资源进行搜索。
对于经过身份验证的用户,您可以通过/me/drive/search(q='{search-query}')将搜索范围扩大到包括任何items that can access。这与您通过迭代sites所做的略有不同,所以我怀疑这不会给出预期的结果(尽管您当然可以,也应该自己确认这一点)。
你更有可能寻找的是SharePoint Search REST API。您可以通过向如下所示的URI发出GET来使用此接口:
https://{tenant}.sharepoint.com/_api/search/query?querytext='sharepoint'但是,为了使用这个接口,需要一个用于SharePoint的access_token。
如果您使用的是v1端点,那么这应该非常简单。您需要更新您的应用程序注册以包含SharePoint应用程序接口,但完成后,您可以简单地刷新现有的access_token,同时将您的resource切换到https://{tenant}.sharepoint.com/。这将为您提供一个新的令牌,并具有调用SharePoint接口的权限。
不幸的是,这不适用于v2端点,因为SharePoint REST API目前不支持这些令牌。因此,您需要切换到v1并强制您的用户重新进行身份验证,这可能会更具挑战性。
https://stackoverflow.com/questions/48472185
复制相似问题