Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft graph api 使用Microsoft Graph创建指向OneDrive文件的永久公共下载链接_Microsoft Graph Api_Onedrive - Fatal编程技术网

Microsoft graph api 使用Microsoft Graph创建指向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

我正在尝试使用Microsoft Graph API获取到OneDrive文件的永久公共下载链接。目标是在我的网站上安装
,OneDrive图像文件适用于任何查看页面的用户

目前我已经尝试了以下几点:

  • GEThttps://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png
    ()返回

    • @microsoft.graph.downloadUrl
      :公共下载链接,但在1小时后过期
    • webUrl
      :私人下载链接,需要身份验证
  • POSThttps://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:/createLink
    ()带有JSON正文
  • 返回

    • link.webUrl
      :公共链接,但不是下载链接。相反,它会在OneDrive文件查看器中打开文件(我无法在HTML中使用/嵌入该文件)

  • 使用previous
    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