Microsoft graph api 使用Microsoft Graph创建指向OneDrive文件的永久公共下载链接
我正在尝试使用Microsoft Graph API获取到OneDrive文件的永久公共下载链接。目标是在我的网站上安装Microsoft graph api 使用Microsoft Graph创建指向OneDrive文件的永久公共下载链接,microsoft-graph-api,onedrive,Microsoft Graph Api,Onedrive,我正在尝试使用Microsoft Graph API获取到OneDrive文件的永久公共下载链接。目标是在我的网站上安装,OneDrive图像文件适用于任何查看页面的用户 目前我已经尝试了以下几点: GEThttps://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png()返回 @microsoft.graph.downloadUrl:公共下载链接,但在1小时后过期 webUrl:私人下载链接,需要身份验证 POSThttps
,OneDrive图像文件适用于任何查看页面的用户
目前我已经尝试了以下几点:
GEThttps://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png
()返回
:公共下载链接,但在1小时后过期@microsoft.graph.downloadUrl
:私人下载链接,需要身份验证webUrl
POSThttps://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:/createLink
()带有JSON正文
:公共链接,但不是下载链接。相反,它会在OneDrive文件查看器中打开文件(我无法在HTML中使用/嵌入该文件)link.webUrl
link.webUrl
生成下载url():{“error”:{“code”:“invalidRequest”,“message”:“Invalid shares key.”}}
我认为这是因为我混合了Graph和OneDrive API,所以它无法识别密钥?将api.onedrive.com
替换为graph.microsoft.com
也不起作用,因为graph需要通常的授权头
有人知道任何有用的东西吗?您非常接近,但需要将
下载=1
url查询参数附加到生成的共享链接以创建下载链接,而不是步骤3,例如:
https://{tenant}-my.sharepoint.com/:i:/g/personal/{account-name}_onmicrosoft_com/{token}?download=1
就这样
只是一个关于步骤3中发生的错误的旁注
为OneDrive for Business或SharePoint生成的共享链接
()无法通过OneDrive使用
个人()共享
端点
谢谢,效果很好!真不敢相信是这么小的东西:)这是官方记录的未来参考的地方吗?很高兴知道!关于文档,也不知道它是否正式文档化,这是它在我们的一个项目中实施的方式
$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";
https://{tenant}-my.sharepoint.com/:i:/g/personal/{account-name}_onmicrosoft_com/{token}?download=1