如何通过Microsoft Graph API查询OneDrive商业版文件的锁定状态及活跃用户?
OneDrive商业版文件锁定与活跃用户查询的API解决方案
一、上传前提前检查文件锁定状态
直接调用Microsoft Graph API的文件详情接口,就能获取文件的锁定状态:
GET https://graph.microsoft.com/v1.0/drive/items/{item-id}
接口返回的file.lock字段会明确说明文件是否被锁定,以及锁定的具体信息。如果文件处于编辑锁定状态,响应里会包含锁定用户的邮箱、显示名等信息,示例结构如下:
{ "file": { "lock": { "lockType": "write", "owner": { "user": { "displayName": "张三", "email": "zhangsan@contoso.com" } }, "expirationDateTime": "2024-05-20T10:00:00Z" } } }
通过这个字段就能提前判断文件是否被占用,不用再靠上传失败来推断。
二、上传失败时获取锁定用户信息
当上传请求因文件锁定失败时,API会返回resourceLocked错误码,错误详情里直接包含锁定用户的邮箱和ID:
{ "error": { "code": "resourceLocked", "message": "The resource you are attempting to access is locked.", "details": [ { "code": "lockMismatch", "message": "The file is locked by user 'zhangsan@contoso.com' (User ID: 12345678-1234-1234-1234-1234567890ab).", "target": "file" } ] } }
从details.message里就能直接提取到用户邮箱,也可以用用户ID调用GET /users/{user-id}接口获取更多用户信息。
三、功能支持说明
目前这些功能在Microsoft Graph API v1.0版本中已经正式支持,不需要等待后续更新。OneDrive界面显示的“Document locked by [用户]”信息,完全可以通过上述file.lock.owner字段或错误响应详情获取到。
如果需要近似实时的状态监测,还可以通过订阅文件的updated变更通知(调用POST /subscriptions接口),当文件锁定状态变化时会收到推送,避免频繁轮询。
内容的提问来源于stack exchange,提问作者Jayshiv
相关产品推荐
相关产品推荐

