You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过EWS及Graph API获取Exchange共享任务列表权限与任务组

通过EWS和Graph API处理Exchange共享任务列表与任务组

一、使用EWS获取共享待办任务列表及任务组

1. 获取共享任务列表(ToDo Task List)

Exchange中,待办任务列表本质是TaskFolder类型的文件夹。要获取共享列表,需先绑定到任务根目录,再遍历子文件夹并检查权限集合:

// 初始化EWS服务(Office 365环境示例,推荐OAuth认证)
ExchangeService ewsService = new ExchangeService(ExchangeVersion.Exchange2016);
ewsService.Credentials = new OAuthCredentials("your-access-token");
ewsService.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

// 绑定到当前用户的任务根文件夹
Folder taskRoot = Folder.Bind(ewsService, WellKnownFolderName.Tasks);

// 遍历所有子任务文件夹(即任务列表)
FindFoldersResults folderResults = taskRoot.FindFolders(new FolderView(100));
foreach (Folder folder in folderResults.Folders)
{
    if (folder is TaskFolder targetTaskList)
    {
        Console.WriteLine($"任务列表名称: {targetTaskList.DisplayName}");
        // 获取共享权限信息
        PermissionSet sharePermissions = targetTaskList.PermissionSet;
        foreach (Permission perm in sharePermissions.Permissions)
        {
            Console.WriteLine($"共享对象: {perm.UserId.Name}, 权限级别: {perm.PermissionLevel}");
        }
    }
}

2. 获取任务组(Task Groups)

EWS提供FindTaskGroups方法直接获取所有任务组,以及组内关联的任务列表:

// 获取所有任务组
FindTaskGroupsResults taskGroupResults = ewsService.FindTaskGroups();
foreach (TaskGroup group in taskGroupResults)
{
    Console.WriteLine($"任务组名称: {group.Name}");
    // 遍历组内绑定的任务列表
    foreach (FolderId listId in group.FolderIds)
    {
        TaskList boundList = TaskList.Bind(ewsService, listId);
        Console.WriteLine($"  关联任务列表: {boundList.DisplayName}");
    }
}

二、获取共享任务列表的权限:EWS与Graph API对比

EWS实现

如上述代码所示,通过TaskFolder.PermissionSet可直接读取该任务列表的所有共享权限,包含共享对象、权限级别(如ReadItems、EditOwnedItems、FullAccess等)。

Graph API实现

针对现代Office 365环境,更推荐使用Graph API,接口更简洁:

  • 获取指定任务列表的共享权限:
    GET https://graph.microsoft.com/v1.0/me/tasks/lists/{task-list-id}/permissionGrants
    
    返回结果会包含授权用户ID、权限类型(read/write/fullAccess)等核心信息。
  • 批量识别共享任务列表:调用GET https://graph.microsoft.com/v1.0/me/tasks/lists,通过isShared字段筛选出共享列表。

三、使用Graph API获取任务组

Graph API中,Outlook任务组对应taskGroups资源,可直接查询:

GET https://graph.microsoft.com/v1.0/me/taskGroups

返回的响应会包含任务组名称、是否为默认组,以及关联的任务列表集合,示例片段:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('user-id')/taskGroups",
  "value": [
    {
      "id": "AQMkADlmN...",
      "name": "团队协作任务组",
      "isDefaultGroup": false,
      "taskLists": [
        {
          "id": "AAMkADlmN...",
          "name": "项目迭代任务",
          "isShared": true
        }
      ]
    }
  ]
}

参考界面截图

Outlook任务列表与任务组界面

内容的提问来源于stack exchange,提问作者Rafa Ayadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:52:09