使用文档ID通过msgraph检索文档



我在Office 365 Sharepoint集合中启用了文档ID功能。我想将文档ID存储在我们的php服务器上,然后能够允许服务器使用文档ID下载文档。

我已经成功地设置了microsoft-sdk-php(仅使用应用程序的租户权限)和phpSPO库(使用microsoft图形api接口)。在这两种情况下,我无法弄清楚如何使用文档ID来检索文档的实际名称和路径。如果我使用文件的标准名称/路径,我可以成功地将其下载到服务器。

microsoft-sdk-php库,我已经尝试搜索驱动项目,但不能确定如何搜索文档ID。关于使用DriveItems/Search(使用过滤器q="…")的Microsoft Graph API的文档似乎非常不完整。我已经尝试了多种变体,试图使用DocId, _dlc_DocId和其他变体进行过滤(同样,该字段的确切名称从文档中不清楚)。

我也尝试过使用curl来捕获文档ID URL (xxxxxx.sharepoint.com/_layouts/15/DocIdRedir.aspx?ID=XXXXXXX-2222222222-86)的重定向,但我要么得到禁止错误,要么无法正确重定向。

我也研究过使用查询来搜索sharepoint驱动器,但没有成功,部分原因是我无法确定"文档Id"字段存储在哪里以及如何存储。

我想我可以为你回答这个问题。我自己也在与这个问题作斗争,所以对于其他在同一条船上的人来说。我在。net工作,但同样应该适用:

您正在寻找的文档id(和其他"属性"数据)实际上不是一个驱动器的一部分,因此您无法通过正常的DriveItem端点找到它。这些数据实际上是存储在sharepoint列表中其他地方的sharepoint元数据。在这种情况下,您需要的数据存储在sharepoint上的系统列表中。我使用的步骤是:

要做到这一点,你需要你的sharepoint站点id和库的id或名称。要获取sharepoint列表,使用以下API调用:
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}
or
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-title}

现在您有了列表,您可以检索列表项。注意,您需要展开字段:

GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?expand=fields

上面的调用应该返回您在'fields'属性中需要的元数据。文档id字段具体存储在名为_dlc_DocIdUrl的字段中。

我希望这有助于你或其他人在未来!

最新更新