【发布时间】:2019-03-06 01:25:05
【问题描述】:
我正在尝试使用 Microsoft Graph API 获取指向 OneDrive 文件的永久公共下载链接。目标是在我的网站上添加<img src="DOWNLOAD_LINK">,并且 OneDrive 图像文件适用于查看该页面的任何用户。
目前我尝试了以下方法:
-
GET https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png(doc) 返回-
@microsoft.graph.downloadUrl:公开下载链接,但 1 小时后过期。 -
webUrl:私人下载链接,需要认证。
-
.
-
POST https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:/createLink(doc) 带有 JSON 正文
{
"type": "view",
"scope": "anonymous"
}
返回
-
link.webUrl:公共链接,但不是下载链接。而是在 OneDrive 文件查看器中打开文件(然后我无法使用/嵌入 HTML)。
.
-
https://stackoverflow.com/a/37951378/2219407
使用之前的
link.webUrl生成下载地址(doc):
$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";
但它会返回
{"error":{"code":"invalidRequest","message":"Invalid shares key."}}
我认为这是因为我混合了 Graph 和 OneDrive API,所以它无法识别密钥?用 graph.microsoft.com 替换 api.onedrive.com 也不起作用,因为 Graph 需要通常的 Authorization 标头。
任何人都知道任何有效的方法?
【问题讨论】:
标签: microsoft-graph-api onedrive