如何代表活跃的 Teams 用户访问 Graph API?

How to access Graph API on behalf of active Teams user?

我是 运行 作为我的客户端应用程序的 Teams 机器人(基于机器人框架)。

该机器人使用 Graph API 来阅读会议的聊天消息。 目前,该机器人通过针对 Azure AD 应用程序的 "client credentials" flow 根据 Graph API 对自身进行身份验证。在 Azure AD 应用程序中,我使用 Graph 的 应用程序权限 来访问 Teams 聊天。

这些应用程序权限受到严格限制,需要 Microsoft 明确手动批准 - 如果您允许应用程序访问可能敏感的聊天数据,这是有道理的。

我想更改身份验证,以便机器人可以代表与机器人交谈的用户访问 Graph API。我能够创建一个登录程序,其中机器人将在 Teams 中显示一个“登录”按钮(通过 OAuthPrompt),用户被带到浏览器进行身份验证,然后我将检索访问令牌。

由于 Teams 用户已经过身份验证,是否可以获取当前用户的访问令牌,以便他们不必再次登录?

这可以通过实施 SSO for your Bot.

来实现

Azure Active Directory (AAD) 中的单点登录身份验证通过静默刷新身份验证令牌,最大限度地减少了用户需要输入其登录凭据的次数。如果用户同意使用您的应用,则无需在其他设备上再次提供同意,即可自动登录。

这里有两个相同的示例:

csharp_dotnetcore

Node.js

如果您遇到任何问题,请告诉我们。