templates - 基于 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<>() 任何想法如何在我的案例中完成?
解决方案
我在 Teams 桌面版和移动版中都能很好地与 OAuthPrompt 和 Azure Bot Service 配合使用。
这是我的代码供您参考。检查一下,看看类似的代码是否适合你。
顺便说一句,添加机器人的新建议方法是使用services.AddTransient<IBot, TBot>()
. 尽量避免使用AddBot
.
推荐阅读
- android - 如何在约束布局内的循环中插入动态生成的文本视图?
- docker - 发布请求时出现错误网关 502
- mongodb - 在 MongoDB 聚合框架中将小数四舍五入到最接近的整数
- python - QRectF 没有出现在我的 QGraphicsScene 中
- java - 如何根据预定义的变量或在 config.properties 中导入不同的包?
- text - paperjs pointtext onhover 选择和调整大小
- python-3.x - Azure 机器学习服务中的数据源
- hyperledger-fabric - 我如何创建一个公共节点,我的其他节点可以与之交谈并相互进行交易
- c# - net-core2.0 中带有 NLog 的 DI
- django - 如何解决“AttributeError”类型的对象不是 JSON 可序列化的?