You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:40:17