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

OfficeJS邮件插件Manifest配置错误:无法使用WebApplicationInfo

解决Office外接清单验证错误&配置OAuth令牌获取

我来帮你搞定这个问题!你遇到的XML Schema Violation错误,根源是VersionOverrides的命名空间和主清单的命名空间不匹配,同时要正确配置WebApplicationInfo才能让getAccessTokenAsync正常工作,下面分步骤说清楚:

错误原因拆解

你的主OfficeApp元素用的是http://schemas.microsoft.com/office/appforoffice/1.1这个旧版本的命名空间,但你引用的VersionOverrides用了带/1.1的子命名空间http://schemas.microsoft.com/office/mailappversionoverrides/1.1——对于1.1版本的主清单,只能用不带版本号的http://schemas.microsoft.com/office/mailappversionoverrides作为VersionOverrides的根命名空间,或者你可以升级主清单的命名空间到更高版本(比如1.6+)来适配带版本的VersionOverrides。

两种解决方案

方案1:保持主清单1.1版本不变

修改VersionOverrides的命名结构,外层用无版本的命名空间,内层嵌套带版本的(如果需要),同时在里面添加正确的WebApplicationInfo配置:

<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:type="TaskPaneApp">
  <!-- 这里保留你原有的其他清单配置,比如DisplayName、Description等 -->

  <!-- 正确的VersionOverrides结构 -->
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides">
    <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1">
      <!-- 配置OAuth所需的WebApplicationInfo -->
      <WebApplicationInfo>
        <Id>你的应用注册GUID</Id>
        <!-- Resource要和Azure AD应用里的API URI完全匹配,本地测试示例如下 -->
        <Resource>api://localhost:3000/你的应用注册GUID</Resource>
        <Scopes>
          <!-- 根据你的业务需求添加权限范围,比如读取用户文件 -->
          <Scope>Files.ReadWrite</Scope>
          <Scope>User.Read</Scope>
        </Scopes>
      </WebApplicationInfo>

      <!-- 这里可以保留你原有的其他VersionOverrides配置,比如Hosts、Requirements等 -->
    </VersionOverrides>
  </VersionOverrides>
</OfficeApp>

方案2:升级主清单到1.6+版本(推荐,更灵活)

把主OfficeApp的命名空间升级到1.6或更高(比如1.10),这样就可以直接使用带版本的VersionOverrides命名空间,结构更简洁:

<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.6"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:type="TaskPaneApp">
  <!-- 原有的其他清单配置 -->

  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1">
    <WebApplicationInfo>
      <Id>你的应用注册GUID</Id>
      <Resource>api://localhost:3000/你的应用注册GUID</Resource>
      <Scopes>
        <Scope>Files.ReadWrite</Scope>
        <Scope>User.Read</Scope>
      </Scopes>
    </WebApplicationInfo>

    <!-- 其他VersionOverrides配置 -->
  </VersionOverrides>
</OfficeApp>

关键注意事项

  • Resource必须匹配Azure AD配置:这个值要和你在Azure AD注册应用时设置的API URI完全一致,本地开发通常是api://localhost:你的端口号/你的GUID
  • 权限范围要对应:清单里的Scopes必须是你在Azure AD应用中已经添加并授权的权限
  • 重新验证清单:修改后再运行validate-office-addin manifest.xml,确保没有其他Schema错误

完成以上配置后,你的getAccessTokenAsync代码就能正常获取OAuth令牌了,记得处理好错误分支(比如用户拒绝授权的情况)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:08:33