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

使用CloudAdapter在Outlook中无法获取Teams Bot的SSO令牌

问题解决:Outlook中CloudAdapter获取SSO令牌失败

针对你升级CloudAdapter后,Outlook里触发Adaptive Card刷新时无法获取SSO令牌的问题,可尝试以下解决方案:

  • 适配Outlook的用户标识规则
    CloudAdapter对跨渠道用户身份的处理更严谨,Outlook的context.activity.from.id是临时渠道标识,不能直接用于绑定SSO令牌。需改用用户的AAD身份标识:

    // 优先使用AAD对象ID,这是SSO令牌关联的唯一身份
    const userId = context.activity.from.aadObjectId || context.activity.from.id;
    const tokenResponse = await userTokenClient.getUserToken(
        userId,
        "BOT OAuth Connection Name",
        context.activity.channelId,
        magicCodeString
    );
    

    注意:Outlook场景下from.aadObjectId通常会存在,若未获取到,可通过from.userPrincipalName调用Graph API获取用户AAD ID。

  • 检查OAuth连接与平台配置

    1. 确认Azure AD应用注册中,已添加Outlook作为允许的平台(在「身份验证」→「平台配置」中添加Outlook客户端或网页应用);
    2. 确保OAuth连接的权限范围包含Outlook所需的API权限(如Mail.Read等,根据你的业务需求配置);
    3. 验证CloudAdapter初始化时,正确传入了应用ID和密码,确保UserTokenClient能正常初始化:
      const adapter = new CloudAdapter({
          appId: process.env.MICROSOFT_APP_ID,
          appPassword: process.env.MICROSOFT_APP_PASSWORD
      });
      
  • 处理Adaptive Card Invoke的上下文差异
    Outlook中Adaptive Card的Invoke请求无需手动输入magic code,可将magicCodeString设为undefined或空字符串;同时在Invoke处理函数开头验证userTokenClient是否存在:

    async function onAdaptiveCardInvoke(context, invokeValue) {
        const userTokenClient = context.turnState.get(context.adapter.UserTokenClientKey);
        // 日志验证客户端是否加载成功
        console.log('UserTokenClient 状态:', !!userTokenClient);
        // 后续令牌获取逻辑...
    }
    
  • 兼容跨渠道身份映射
    如果aadObjectId无法直接获取,可通过应用自身的令牌调用Microsoft Graph API,用userPrincipalName查询用户AAD ID:

    // 先获取应用令牌初始化Graph客户端
    const graphClient = await getGraphClient(adapter, context);
    const user = await graphClient.api(`/users/${context.activity.from.userPrincipalName}`).get();
    const userId = user.id;
    

内容的提问来源于stack exchange,提问作者Naina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:15:09