如何通过C#客户端为OneDrive共享Word文档设置「可审阅」权限
在C#中为OneDrive for Business上的Word文档设置「可审阅」权限
要实现OneDrive for Business上Word文档的「可审阅」权限,需要结合Word文档的限制编辑设置和OneDrive的共享权限——OneDrive原生共享权限没有直接的「审阅」选项,该权限本质是让用户拥有文档查看权限,同时仅允许添加批注(无法修改正文)。以下是具体的C#实现步骤:
核心思路
- 为Word文档开启「仅允许批注」的限制编辑保护;
- 为文档创建具有「查看」权限的共享链接(或针对特定用户设置查看权限)。
实现步骤
1. 准备依赖
安装Microsoft Graph SDK相关NuGet包:
Install-Package Microsoft.Graph Install-Package Azure.Identity
2. 初始化Graph客户端
使用服务主体认证(适用于后台程序):
using Microsoft.Graph; using Azure.Identity; // 替换为你的租户、客户端ID和密钥 var tenantId = "your-tenant-id"; var clientId = "your-client-id"; var clientSecret = "your-client-secret"; var scopes = new[] { "https://graph.microsoft.com/.default" }; var credential = new ClientSecretCredential(tenantId, clientId, clientSecret); var graphClient = new GraphServiceClient(credential, scopes);
3. 设置Word文档的「仅允许批注」保护
通过Microsoft Graph Word API设置文档保护类型为Comments:
// 替换为你的Drive ID和文档DriveItem ID var driveId = "your-drive-id"; var driveItemId = "your-drive-item-id"; var documentProtection = new DocumentProtection { ProtectionType = DocumentProtectionType.Comments, // 若需密码保护可添加Password字段,企业环境通常无需设置 }; await graphClient.Drives[driveId].Items[driveItemId].Word.DocumentProtection .Request() .PatchAsync(documentProtection);
4. 创建「查看」权限的共享链接
为文档创建查看权限的共享链接,确保用户仅能查看并批注文档:
var sharingPermission = new Permission { Roles = new List<string> { "read" }, Link = new SharingLink { Type = SharingLinkType.View } }; var createdPermission = await graphClient.Drives[driveId].Items[driveItemId].Permissions .Request() .AddAsync(sharingPermission);
关键注意事项
- 权限配置:确保应用程序已在Azure AD中配置
Files.ReadWrite.All或Sites.ReadWrite.All的应用权限; - 特定用户共享:若需给指定用户设置审阅权限,可在
Permission对象中添加Recipients列表,仍将Roles设为read; - 权限组合:必须同时设置文档的批注保护和OneDrive的查看权限,缺一不可。
内容的提问来源于stack exchange,提问作者Peter Dongan
相关产品推荐
相关产品推荐

