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

VS2022中Office邮件插件添加WebApplicationInfo后调试报错

Office插件SSO配置问题排查与修复

问题描述

使用VS 2022开发Office插件并实现SSO功能时,添加以下<VersionOverrides>配置段后,调试弹出错误提示但输出窗口无报错信息,移除该配置后插件可正常构建调试:

<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1"
xsi:type="VersionOverridesV1_1">
    <WebApplicationInfo>
      <Id>guid</Id>
      <Resource>api://localhost:3000//guid</Resource>
      <Scopes>
        <Scope>Files.Read</Scope>
        <Scope>profile</Scope>
        <Scope>openid</Scope>
     </Scopes>
   </WebApplicationInfo>
<VersionOverrides>

同时,调用以下代码获取AccessToken时返回错误:"The identity API is not supported for this add-in."

async function getUserData() {
    try {
        let userTokenEncoded = await OfficeRuntime.auth.getAccessToken();
        let userToken = jwt_decode(userTokenEncoded); // 使用jwt-decode库
        console.log(userToken.name); // 用户名
        console.log(userToken.preferred_username); // 邮箱
        console.log(userToken.oid); // 用户ID     
    }
    catch (exception) {
        console.log(exception);
        if (exception.code === 13003) {
            popup.showNotification("test");
        }
        if (exception.code === 13000) {
            popup.showNotification(exception.message);
        }
        else {
            popup.showNotification("test");
        }
    }
}

需补充/修正的配置项

1. 修复XML语法错误

配置末尾的<VersionOverrides>未闭合,需改为</VersionOverrides>;同时Resource字段中的双斜杠//要改为单斜杠/(无效URI格式会导致SSO验证失败)。修正后的完整配置:

<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1"
xsi:type="VersionOverridesV1_1">
    <WebApplicationInfo>
      <Id>你的Azure应用注册ID</Id>
      <Resource>api://localhost:3000/你的Azure应用注册ID</Resource>
      <Scopes>
        <Scope>Files.Read</Scope>
        <Scope>profile</Scope>
        <Scope>openid</Scope>
     </Scopes>
   </WebApplicationInfo>
</VersionOverrides>

2. 确保VersionOverrides层级正确

VersionOverrides必须嵌套在<OfficeApp>根节点下,层级不能出错,示例完整结构:

<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:type="TaskPaneApp">
  <!-- 基础配置:Id、Version、ProviderName、DefaultLocale等 -->
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1"
    xsi:type="VersionOverridesV1_1">
    <WebApplicationInfo>
      <!-- 你的WebApplicationInfo配置 -->
    </WebApplicationInfo>
    <!-- 其他Overrides配置,如Hosts、Requirements等 -->
  </VersionOverrides>
</OfficeApp>

3. 声明SSO权限要求

在VersionOverrides下添加Requirements节点,明确声明对IdentityAPI的版本要求,确保Office客户端识别SSO功能:

<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1"
  xsi:type="VersionOverridesV1_1">
  <Requirements>
    <Sets DefaultMinVersion="1.1">
      <Set Name="IdentityAPI" MinVersion="1.3"/>
    </Sets>
  </Requirements>
  <WebApplicationInfo>
    <!-- 你的WebApplicationInfo配置 -->
  </WebApplicationInfo>
</VersionOverrides>

IdentityAPI的最低版本需设为1.3,才能支持OfficeRuntime.auth.getAccessToken()调用。

4. 验证Azure应用注册配置

  • 重定向URI必须设置为api://localhost:3000/你的Azure应用注册ID,与清单Resource字段完全一致;
  • 确认已添加Delegated权限(Files.Read、profile、openid),且工作/教育账户已完成管理员同意;
  • 应用ID URI需设置为api://localhost:3000/你的Azure应用注册ID,与清单Resource匹配。

5. 确认Office客户端版本支持

SSO功能要求:

  • Windows版Office:2016及以上并更新至最新补丁;
  • Mac版Office:16.19及以上;
  • 网页版Office:使用Chrome、Edge、Firefox等现代浏览器。

代码优化建议

调用getAccessToken()前需确保Office.js完全加载,建议在Office.initialize回调后执行SSO逻辑:

Office.initialize = function(reason) {
  getUserData();
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:07:12