如何获取OneDrive共享文件夹中未直接共享文件的在线链接?
OneDrive快捷方式文件夹文件在线链接生成解决方案
问题原因
- 调用
/me/drive/root/children无法看到共享文件夹快捷方式,是因为默认返回结果未包含带@microsoft.graph.shortcutfacet的DriveItem,需通过筛选参数指定获取。 /me/drive/sharedWithMe仅返回直接共享给当前用户的文件/文件夹,共享文件夹内非直接共享的文件不在该接口结果中。
解决步骤
步骤1:获取根目录下的共享文件夹快捷方式
调用API筛选出带有shortcut属性的项,示例请求:GET /me/drive/root/children?$select=id,name,shortcut&$filter=exists(shortcut)响应中会包含你添加的共享文件夹快捷方式,其中
shortcut.targetId是目标共享文件夹的实际ID。步骤2:获取快捷方式目标文件夹内的文件
通过目标文件夹ID遍历其下所有文件:GET /me/drive/items/{shortcut.targetId}/children此接口会返回文件夹内所有文件(包括非直接共享的)的详细信息,包含文件ID。
步骤3:生成文件在线链接
对目标文件调用createLink接口生成在线链接,逻辑与普通OneDrive文件一致:POST /me/drive/items/{fileId}/createLink请求体可指定链接权限(如
{"type": "view", "scope": "organization"}),响应中的webUrl即为所需在线链接。
补充说明
若用户拖拽的文件路径包含快捷方式文件夹名称,可先通过步骤1的API匹配快捷方式名称,获取目标文件夹ID后,再遍历文件匹配路径,最终调用createLink生成链接即可。
内容的提问来源于stack exchange,提问作者bas
相关产品推荐
相关产品推荐

