OneDrive REST API嵌入下载网址

时间:2019-11-11 16:33:22

标签: onedrive

我正在尝试通过Rest API在OneDrive个人中生成嵌入链接。我正在使用函数createLink(link)。我能够生成一个链接,但是在浏览器中打开此链接会给我一个“对不起,出了点问题”错误。
如果我通过浏览器登录到OneDrive,则可以看到该文件现在已共享并且具有嵌入链接。通过API返回的相同链接。该链接的格式为:
https://onedrive.live.com/embed?resid=abcdef&authkey=123456
但是,如果单击“嵌入”按钮,则会得到一个更长的,格式不同的链接:
https://yfzapq.am.files.1drv.com/abcdefg123456?height=504&width=504
该链接可以正常工作。将其粘贴到任何浏览器中,它将下载文件-无需提问!
所以我的问题是如何通过Rest API来保持第二个链接?

1 个答案:

答案 0 :(得分:0)

遇到同样的问题。我查看了当您在网站上使用“嵌入”时,onedrive究竟确切地获得了嵌入网址。原来,它使用了createLink以外的其他功能-它使用了/thumbnails

您还可以使用此功能,因为它是Rest API的一部分-结果,您将获得格式为https://yfzapq.am.files.1drv.com/abcdefg123456?width=768&height=1024&cropmode=nonethat的链接,该链接似乎可以永远持续下去。如果您从网址(?width=768&height=1024&cropmode=none)中删除所有参数,则会生成原始图像。

PS这种方法存在的问题-根据我的经验,缩略图网址将在4小时内消失。


2020年11月7日的状态

上述方法已停止工作,现在仅返回无效的网址。我正在使用的当前解决方案是GET /me/drive/items/{item-id}/content。 它将重定向到您可以下载文件的页面。但是,您还可以执行的操作是为此请求禁用重定向,并获取所请求文件的直接URL(从“ Location”标头中)。

当然,它不会永远持续下去,但是如果您需要从其他地方的Google驱动器重新上传文件而无需实际下载文件并提供从其上传的网址,则可以使用此方法。