使用Microsoft Graph API上传文件时配置文件级权限的问题咨询
Microsoft Graph API上传文件时配置文件级权限的问题咨询
没问题,这个需求完全可以实现!你遇到的默认组织成员可见的情况,是因为OneDrive/SharePoint的默认权限策略导致的,咱们可以通过Microsoft Graph API在上传文件时或上传后调整权限,把文件设为仅自己可访问的状态。
下面两种方法都能帮你达成目标:
方法一:上传文件时直接配置权限
你可以先创建文件的元数据条目,明确指定只有你自己拥有该文件的权限,再上传实际的文件内容:
- 先发送
POST请求创建文件的基础条目,在请求体里定义专属权限:
POST /me/drive/root/children Content-Type: application/json { "name": "你的文件.docx", "file": {}, "permissions": [ { "grantedToIdentities": [ { "user": { "id": "你的用户ID" } } ], "roles": ["owner"] } ] }
- 请求成功后会返回文件的唯一ID,接着用这个ID发送
PUT请求上传文件内容:
PUT /me/drive/items/{文件ID}/content Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document [文件二进制内容]
这样创建出来的文件就只有你自己能访问,不会对组织内其他成员开放。
方法二:上传后修改现有文件权限
如果已经完成文件上传,也可以事后调整权限:
- 先获取该文件的所有权限列表,发送
GET请求:
GET /me/drive/items/{文件ID}/permissions
在返回结果里,找到授予整个组织的权限记录(通常grantedToIdentitiesV2字段里会包含organization类型的条目),记下这条权限的id。
2. 发送DELETE请求删除这个组织级权限:
DELETE /me/drive/items/{文件ID}/permissions/{权限ID}
删除完成后,该文件就只剩下你作为所有者的权限,其他组织成员将无法访问它。
补充说明:如果是上传到SharePoint文档库,文件默认会继承文档库的权限策略,这时候需要先打破权限继承,再设置单独的文件权限——你可以调用POST /sites/{site-id}/lists/{list-id}/items/{item-id}/breakRoleInheritance接口完成权限继承的打破,之后再按上面的步骤调整权限即可。
备注:内容来源于stack exchange,提问作者Sherlock
相关产品推荐
相关产品推荐

