首页 > 解决方案 > 基于 Enterprise Bot 模板 (v4 SDK) 的来自 Bot 的 OAuth2 登录不适用于 MS Teams 桌面应用程序

问题描述

我有一个基于企业机器人模板(机器人构建器框架 SDK v4.0)的机器人。我已经根据堆栈溢出中的其他线程调用了 AuthenticationDialog(使用 AAD v2 进行 OAuth2 登录),我已经实现了在我的 IBot 实现中使用“signin/verifyState”处理 Invoke Activity,它在 Microsoft Teams Web 应用程序上运行良好,但是, MS Teams 桌面应用程序弹出选择登录用户的对话框,它立即关闭对话框并发送带有“{”状态“:”123456“}的登录/验证状态的调用活动,我正在显示用户输入状态,当用户进入时,它可以工作。它是桌面 MS Teams 应用程序中的错误(或)我做错了什么。

在我的机器人中,我不使用 SDK 示例中的以下行:

await Dialog.RunAsync(turnContext, conversationState.CreateProperty<DialogState>(nameof(DialogState)), cancellationToken)

在 Slack 中同样的代码是这样工作的,bot 弹出登录对话框,当用户点击登录时,浏览器显示登录选项,用户可以选择特定的用户名帐户,成功登录后,它显示屏幕:请在聊天窗口输入此验证码以完成登录:123456 当用户输入验证码时,会自动将 TokenResponse 提供给机器人。

在 TeamsAuth 示例中,Startup.cs 调用 // Create the bot as a transient. services.AddTransient<IBot, TeamsBot<MainDialog>>(); 在我的机器人调用 services.AddBot<>() 任何想法如何在我的案例中完成?

标签: templatesbotframeworkbotsenterprise

解决方案


我在 Teams 桌面版和移动版中都能很好地与 OAuthPrompt 和 Azure Bot Service 配合使用。

这是我的代码供您参考。检查一下,看看类似的代码是否适合你。

顺便说一句,添加机器人的新建议方法是使用services.AddTransient<IBot, TBot>(). 尽量避免使用AddBot.


推荐阅读