我正在创建一个图形 API 应用程序,用于将消息发送到 Microsoft Teams 中的个人聊天和群聊。
范围:个人资料、openid、电子邮件、ChannelMessage.Send、Chat.Create、Chat.ReadWrite 和 User.Read
我已在我的 Azure Entra ID (AAD) 中注册并配置了该应用程序(如租户 A)。要在外部租户(例如租户B)中使用该应用程序,该应用程序需要管理员同意和用户同意。
对于管理员同意,我将以下链接分享给租户B的管理员,并要求管理员授予同意:
https://login.microsoftonline.com/common/adminconsent?client_id=
后来,我要求租户 B 的管理员使用以下链接创建用户并授予权限,以便我可以代表创建的用户向 Microsoft Teams 中的个人/群组聊天发送消息。
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?response_type=code&client_id=
创建的用户向应用程序授予权限后,我会收到一个授权代码,从中生成访问令牌。访问令牌后来用于发送适当的图形 API 请求,我能够发送消息。
我想知道我提到的方法是否符合标准做法。另外,为了共享链接,我正在考虑创建一个带有两个嵌入链接的按钮的 Web 应用程序。
问题
是否有更好的方法来授予管理员同意和用户同意,而不是共享并要求管理员/用户单击链接。
由于应用程序将向 Microsoft Teams 发布消息,我可以创建一个静态选项卡应用程序,其 URL 指向 Web 应用程序,该应用程序将具有一个包含以上按钮形式链接的页面。
是否需要在外部租户(tenantB)中创建一个用户来代表我们发送消息?我曾考虑创建一个机器人,但放弃了这个想法,因为在我的情况下,通信是单向的。
请在下面找到您的疑问的答案:
是的,您可以在应用程序中创建按钮并在其中添加链接: 参考样本: https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/graph-teams-tag/nodejs/client/src/components/dashboard.jsx#L72
是的,如果需要,您也可以创建静态选项卡。
不必在不同租户(TenantB)中创建用户,您也可以在租户 A 中设置策略。