如何从MS Graph获取工作文档预览链接

时间:2019-01-24 08:52:27

标签: rest office365 microsoft-graph onedrive

我正在尝试通过MS Graph获取用户最近文档的预览链接。不幸的是,端点返回的链接不起作用。

要获取有关文件的信息,我首先调用GET https://graph.microsoft.com/beta/me/drive/recent。然后,我从parentReference属性复制驱动器ID和文档ID。

要获取预览链接,我使用端点POST https://graph.microsoft.com/beta/drives/<DriveID>/items/<DocumentID>/preview 而且效果很好。但是,当我单击链接时,出现错误“此项目可能不存在或不再可用”。该文档存在于SharePoint上,否则将不会出现在“最新文档”下。网址看起来像这样:https://www.onedrive.com/embed?webUrl=xyz.sharepoint.com/sites/nameOfTheSite/docLibName&id=sites/nameOfTheSite/DocLibName&embed=xxx&authToken=xxx

我希望/preview端点的响应应返回有效的URL。我必须在O365上进行一些配置吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

在您的示例中,嵌入链接(preview看上去 valid 无效,因为id参数引用了容器(库):{{ 1}}。它不受支持,而是嵌入链接应指向文件

该问题很可能是由于sites/nameOfTheSite/DocLibName造成的:

itemId
在您的示例中,

似乎是指库而不是文件。确保指定了正确的https://graph.microsoft.com/beta/drives/<DriveID>/items/<DocumentID>/preview ^^^^^^^^^^^^

例如,itemId端点返回以下有效负载:

https://graph.microsoft.com/v1.0/me/drive/recent

其中

  • { "value" : { //another properties are omitted for a clarity //... "remoteItem": { "id": "01ECKZLCWSR7F76B64KZFL7I3QGZVPJELU" //... "parentReference": { "driveId": "b!79yKq-2MdkSDnQ7_1Pf3FOkRyDCajpRIvqtA7UrsEO-vu3D_qkpaT50Y6CMcSmFv", "driveType": "documentLibrary", "id": "01ECKZLCV6Y2GOVW7725BZO354PWSELRRZ" }, } } } -对应于文件的项目ID
  • remoteItem.Id-对应于驱动器ID
  

不要与remoteItem.parentReference.driveId混淆   到图书馆的商品ID