2016-09-14 61 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

相關問題