Teams Bot移动端触发登录Invoke活动时OAuth卡片不返回Token
Teams Bot基于AAD v2的OAuth登录移动端失效问题
我依据微软官方Teams Bot认证指南,为Teams Bot实现了基于Microsoft AAD v2的OAuth登录流程,使用OAuthPrompt对话框。
代码实现细节
OAuthPrompt对话框定义
AddDialog(new OAuthPrompt( nameof(OAuthPrompt), new OAuthPromptSettings { ConnectionName = configuration["ConnectionName"], Text = "Please Sign In", Title = "Sign In", Timeout = 300000, EndOnInvalidMessage = true }));
启动登录对话框
将OAuthPrompt作为根对话框的第一步启动:
private async Task<DialogTurnResult> LoginPromptAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { return await stepContext.BeginDialogAsync(nameof(OAuthPrompt), null, cancellationToken); }
处理Invoke活动
通过OnTeamsSigninVerifyStateAsync函数传递Invoke活动:
protected override async Task OnTeamsSigninVerifyStateAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken) { await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>(nameof(DialogState)), cancellationToken); }
问题现象
该登录流程在桌面客户端运行完全正常,但在移动端登录时,Bot收到的响应中不包含Token。我的实现流程与微软官方提供的Teams Bot认证示例几乎一致。
已尝试的无效解决方案
- 在应用清单的
validDomains属性中添加login.microsoftonline.com和token.botframework.com - 在清单中配置
devicePermissions": [ "openExternal" ]
本地调试时发现,移动端的登录Invoke活动会触发404错误。
更新:我测试了上述官方示例,发现它在移动端同样无法完成登录,目前无法确定问题出在自身配置还是示例代码已过时,希望有人能克隆该示例验证结果。
内容的提问来源于stack exchange,提问作者Antony Mathew
相关产品推荐
相关产品推荐

