2016-09-14 548 views
-1

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

action: "share | download" 

结合,但似乎并没有让双方的WEBURL值和下载网址(@ microsoft.graph.downloadUrl)......有别人之所以能做到这一点?或者是有使用共享URL(WEBURL)来得到一个下载网址,以便我们能够获得文件的文本内容的方法吗?

我知道有可用的REST服务尽管这可能是已弃用,因为该页顶部有消息:

本文档是ar而且不被维护。

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

+0

为REST客户端支持的API被记录在这里,https://dev.onedrive.com/README.htm 有关如何使用共享令牌或共享网址咨询HTTPS细节://dev.onedrive .com/shares/shares.htm,从这里你可以通过正常的API下载文件 –

回答

1

我能够在本地托管OneDrive.js file,取消缩小它并修改下面的行(第104行),使downloadUrl包含在对文件的所有查询中。这可以让我们得到一个shareUrl和一个downloadUrl。

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

对于导致管道丢失的标志感到抱歉。实际上,现在我们只允许每个请求执行一个动作,如(action:“query”)。文档中的管道符号表示“或”,英文不是代码。

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

  • 一个WEBURL您在响应的“WEBURL”属性看到的是 URL指向的资源联机需要用户登录看到 它。

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

JS选择器

如果你想要的下载链接和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 

所有已经共享的链接都应该返回到permissions数组对象中。

如果你没有一个共享的链接,你需要创建的共享链接,你应该尝试https://dev.onedrive.com/items/sharing_createLink.htm

虽然它没有返回WEBURL和下载网址后面,所以你需要一个额外的请求。

+0

好吧 - 我正在尝试使用API​​,并且不清楚使用哪个根URL /域 - 我会使用“https: // api.onedrive.com',给出[此入门页面](https://dev.onedrive.com/getting-started.htm)?例如https://api.onedrive.com/v1.0/drive/items/[item-id]?select=id,name,@content.downloadUrl,webUrl&expand=permissions –

+0

当我尝试该URL(https:// api .onedrive.com/v1.0/drive/items/[item-id]?select = id,name,@ content.downloadUrl,webUrl&expand = permissions)从选择器返回的ItemId,我看到'{“error”: {“code”:“itemNotFound”,“message”:“Item does not exist”}}' - 我想知道是不是因为我们没有包含auth令牌?如果有必要,可以从OneDrive js var获得这样的令牌并通过JS执行HTTP请求? –

+0

是的,你需要为你的应用程序的AAD/MSA身份验证令牌:https://apps.dev.microsoft.com – dabox