如何从OneDrive API获取共享和下载链接

时间:2016-09-14 15:54:42

标签: javascript onedrive

我正在使用OneDrive JS Picker,并希望获得下载和共享价值。 sample in the documentation列出了由管道分隔的操作参数的选项。我希望使用按位运算符来组合这些值(例如

action: "share | download"

但这似乎不允许webUrl值和下载URL(@ microsoft.graph.downloadUrl)......还有其他人能够做到这一点吗?或者有没有办法使用共享URL(webUrl)来获取下载URL,以便我们可以获取文件的文本内容?

我知道有一个REST服务虽然可以弃用,但是根据该页面顶部的消息:

  

此文档已存档且未进行维护。

但如果仍然可以使用,也许我们可以使用它来下载文件......如果是这样,我可以将文件ID放在该下载URL和访问令牌中吗?

2 个答案:

答案 0 :(得分:1)

我能够在本地托管OneDrive.js file,将其缩小并修改下面的行(第104行),以便将downloadUrl包含在文件的所有查询中。这允许我们获得shareUrl和downloadUrl。

e.DEFAULT_QUERY_ITEM_PARAMETER = "expand=thumbnails&select=id,name,size,webUrl,folder,@content.downloadUrl";

答案 1 :(得分:0)

抱歉这个误导性的管道标志。实际上现在我们只允许每个请求执行一个操作(操作:"查询")。管道中的管道标志意味着“或”#39;用英语而不是代码。

在我回答之前,我想澄清一下webUrl和shareUrl之间的区别。

  • 您在回复“webUrl'”中看到的webUrl属性是 url指向在线资源,需要用户登录才能看到 它

  • 一个shareUrl,其中包含拥有该权限的所有人的权限 链接可以根据用户的配置查看/编辑它。

JS Picker

如果您想同时回复下载链接和webUrl,那应该很容易:

{
    action: "query",
    advanced: {queryParameters: "select=id,name,webUrl,@content.downloadUrl"}
}

如果您想同时回复下载链接和共享链接,则不支持。

<强> API

要使用API​​实现此目的,您可以转到新的API页面:https://dev.onedrive.com/items/get.htm

并获取具有已共享链接的项目

GET /v1.0/drive/items/<item-id>?select=id,name,@content.downloadUrl,webUrl&expand=permissions

应该在权限数组对象中返回所有已经共享的链接。

如果您没有共享链接,并且需要创建共享链接,则应尝试https://dev.onedrive.com/items/sharing_createLink.htm

虽然它没有返回webUrl并下载url,所以你需要一个额外的请求。