Microsoft Graph/Teams-is 有一种使用委派权限列出用户频道的方法吗?

Microsoft Graph/Teams-is there a way to list a user's channels using delegated permissions?

我正在尝试将一些机器人逻辑转换为使用委托权限而不是应用程序逻辑,但我 运行 遇到了机器人功能的问题,该功能可以 post 到 Teams 频道来自 1:1 对话。用户可以要求机器人 post 到一个频道,这工作正常,但是当我拿走 Group.ReadWrite.All 时,我找不到不需要管理员同意的解决方法。这是当前流程:

因此,通过委派的非管理员权限,我可以列出用户的团队,post 代表他们向频道发送消息,但不能列出他们加入的团队的频道?文档 here 说您需要委托 Group.Read.All 或 ReadWrite.All,这两者都需要管理员同意。

我是否缺少另一种获取 teams/channels 列表供用户交叉 post 的方法?我不想将机器人添加到频道。我想我可以 create/store 每个频道的连接器列表,但这会增加很多额外的用户开销。挑战在于我想将此机器人部署到拒绝向 3p 应用程序提供任何 application/admin 同意权限的组织。

我不知道我是怎么错过这个的,但是有一个不需要管理员同意的 Channel.ReadBasic.All 权限。这意味着我可以在我的机器人中做这样的事情:

  • 使用 graphClient.Users[aadUserId].JoinedTeams.Request().GetAsync()
  • 获取用户加入的团队
  • 使用 graphClient.Teams[teamID].Channels.Request().GetAsync()
  • 获取团队频道
  • Post 使用 c.Teams[teamID].Channels[channelID].Messages.Request().AddAsync(chatMessage) 到 docs 中概述的频道。 GetAwaiter().GetResult();

此处唯一的区别是消息归因于用户而不是机器人,但只要没问题,这是一种让用户启动 cross-post 从机器人到团队的方法.