使用Microsoft Graph创建指向OneDrive文件的永久公共下载链接

时间:2019-03-05 03:59:11

标签: microsoft-graph onedrive

我正在尝试使用Microsoft Graph API获得指向OneDrive文件的永久公共下载链接。我们的目标是让$('#one').on('click', function () { $("body").toggleClass("white-bg"); $(".menu-link, .hello-text, .titles").toggleClass("blue"); $("g#g-icon").toggleClass("g-icon-blue"); $("#one").toggleClass("night"); }); 在我的网站上,并且OneDrive图像文件适用于查看该页面的任何用户。

目前我已经尝试了以下操作:

  1. <img src="DOWNLOAD_LINK">doc)返回

    • GET https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:公共下载链接,但在1小时后失效。
    • @microsoft.graph.downloadUrl:专用下载链接,需要认证。

  1. webUrldoc)和JSON正文
POST https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:/createLink

返回

  • { "type": "view", "scope": "anonymous" } :公共链接,但不是下载链接。而是在OneDrive文件查看器中打开文件(然后我无法使用它/将其嵌入HTML)。

  1. https://stackoverflow.com/a/37951378/2219407

    使用上一个link.webUrl生成下载网址(doc):

link.webUrl

但返回

$linkWebUrl = "https://domain-my.sharepoint.com/:i:/g/personal/username_domain/RANDOMTOKEN"; $b64 = base64_encode($linkWebUrl); $b64 = trim($b64, "="); $b64 = str_replace("/", "_", $b64); $b64 = str_replace("+", "-", $b64); $url = "https://api.onedrive.com/v1.0/shares/u!" . $b64 . "/root/content";

我认为这是因为我混用了Graph和OneDrive API,因此无法识别键?用{"error":{"code":"invalidRequest","message":"Invalid shares key."}}代替api.onedrive.com也不起作用,因为Graph需要通常的Authorization标头。

有人知道什么有效吗?

1 个答案:

答案 0 :(得分:1)

您非常接近,但是需要将download=1 url查询参数附加到生成的共享链接上以创建下载链接,例如:

https://{tenant}-my.sharepoint.com/:i:/g/personal/{account-name}_onmicrosoft_com/{token}?download=1

就是这样。

  

关于在步骤3中发生的错误,请注意。

     

为OneDrive for Business或SharePoint生成的共享链接   (https://tenant-my.sharepoint.com)无法通过OneDrive使用   个人(https://api.onedrive.comshares端点