Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.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 drive项webUrl不提供与OneDrive相同的查看功能_Microsoft Graph Api - Fatal编程技术网

Microsoft graph api Microsoft graph drive项webUrl不提供与OneDrive相同的查看功能

Microsoft graph api Microsoft graph drive项webUrl不提供与OneDrive相同的查看功能,microsoft-graph-api,Microsoft Graph Api,microsoft graph drive item webUrl根据文档提供驱动器项的视图url: “在浏览器中显示资源的URL。只读。” 我们发现为图像和视频返回的url执行以下两项操作之一: 返回包含img或视频标记的html页面,该标记将显示/播放该文件 下载该文件 例如,可以下载avi文件,但如果我们转到OneDrive进行“预览”,则会打开一个查看器来播放视频 有没有办法通过api而不是webUrl提供的内容来获取此视图url。url的格式似乎如下所示: 确实webUrl属性返回

microsoft graph drive item webUrl根据文档提供驱动器项的视图url: “在浏览器中显示资源的URL。只读。”

我们发现为图像和视频返回的url执行以下两项操作之一:

  • 返回包含img或视频标记的html页面,该标记将显示/播放该文件
  • 下载该文件
例如,可以下载avi文件,但如果我们转到OneDrive进行“预览”,则会打开一个查看器来播放视频

有没有办法通过api而不是webUrl提供的内容来获取此视图url。url的格式似乎如下所示:

确实
webUrl
属性返回一个驱动器中资产的原始url

要返回指向页面的链接,可以使用端点,例如请求:

POST /me/drive/items/{item-id}/createLink
Content-type: application/json

{
  "type": "view",
  "scope": "anonymous"
}
应该返回以下响应

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#permission",
    "@odata.type": "#microsoft.graph.permission",
    "id": "34e2cb9c-bab6-4a60-b48b-f274af531ba5",
    "roles": [
        "read"
    ],
    "link": {
        "scope": "anonymous",
        "type": "view",
        "webUrl": "https://contoso-my.sharepoint.com/:v:/g/personal/jdoe_contoso_onmicrosoft_com/EXU29gb_xaZCjCNqN7F0_AMBqt9rXdrE_E6GLDoSNAFOFg"
    }
}
其中
link.webUrl
属性包含页面的链接

更新

另一个选项是从
DriveItem.webUrl
属性构造页面url,例如:

function createPageLink(webUrl){
   const oneDriveUrl = webUrl.substr(0,webUrl.indexOf('onmicrosoft_com') + 'onmicrosoft_com'.length);
   var relUrl = webUrl.substr(webUrl.indexOf('/personal'))
   const parentUrl = relUrl.split('/').slice(0, -1).join('/');
   return `${oneDriveUrl}/_layouts/15/onedrive.aspx?id=${relUrl}&parent=${parentUrl}`;    
} 

谢谢你的重播。我们知道共享链接和预览()这两种方法都不适用于我们,因为我们要求url上的访问控制与底层文件的访问控制相同。在共享链接的情况下,作用域要么是匿名的,要么是比基础文件共享对象范围更广的组织。@user1452215,答案已更新(更新部分)