我正在尝试使用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图像文件适用于查看该页面的任何用户。
目前我已经尝试了以下操作:
<img src="DOWNLOAD_LINK">
(doc)返回
GET https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png
:公共下载链接,但在1小时后失效。@microsoft.graph.downloadUrl
:专用下载链接,需要认证。。
webUrl
(doc)和JSON正文POST https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:/createLink
返回
{
"type": "view",
"scope": "anonymous"
}
:公共链接,但不是下载链接。而是在OneDrive文件查看器中打开文件(然后我无法使用它/将其嵌入HTML)。。
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标头。
有人知道什么有效吗?
答案 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.com)
shares
端点