Web Chat未显示登录框:AadV2Bot认证测试问题咨询
嗨,我之前也碰到过一模一样的情况——Bot模拟器里登录流程顺风顺水,但Web Chat里就是只显示那个奇怪的[File of type 'application/vnd.microsoft.card.oauth']提示,完全看不到登录框。这主要是因为Web Chat和模拟器的运行环境差异,得额外配置几个关键项才能让OAuth卡片正常渲染:
先补全Azure AD应用的重定向URI
你在Azure AD里注册的身份验证应用(就是AadV2Bot用的那个),必须添加Web Chat的官方回调地址:https://webchat.botframework.com/api/oauth/signin。没加这个地址的话,Web Chat根本没法完成OAuth的回调流程,自然不会显示登录框。去Azure AD的应用注册页面,找到「重定向URI」选项,把这个地址添加上就行。配置Web Chat的初始化参数
嵌入Web Chat时,初始化代码里必须带对核心参数,尤其是用户ID和Direct Line令牌,确保Web Chat能正确识别并渲染OAuth卡片。举个示例:window.WebChat.renderWebChat({ directLine: window.WebChat.createDirectLine({ token: '你的Direct Line令牌' }), userID: '唯一的用户标识ID', username: '显示的用户名' }, document.getElementById('webchat'));另外,如果用的是匿名Direct Line令牌,得先在Azure门户的Bot资源里开启「允许匿名访问」,不然令牌会直接失效。
核对Bot代码里的OAuth连接名称
检查AadV2Bot代码中的ConnectionName,必须和你在Azure Bot Service里创建的OAuth连接名称完全一致——大小写、拼写都不能错。这个名称是Bot和Azure AD之间的匹配标识,不对应的话,Bot发出的OAuth卡片在Web Chat里会无法被正确解析。升级Web Chat到最新版本
旧版本的Web Chat对OAuth卡片的支持可能存在bug,建议直接用CDN加载最新版脚本:<script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>检查CORS设置(自定义托管页面需注意)
如果是自己托管Web Chat页面,得把页面域名加到Azure Bot Service的CORS允许列表里。在Azure门户的Bot资源中找到「设置」→「CORS」,添上你的页面域名,否则浏览器会拦截Web Chat和Bot服务之间的通信,导致卡片无法渲染。
按这些步骤逐一排查配置,应该就能在Web Chat里看到正常的登录框了。
内容的提问来源于stack exchange,提问作者rustyocean

