Outlook Web外接程序清单添加IdentityAPI Set失败,报错原因咨询
问题原因与解决办法
你遇到的这个报错是因为Outlook邮箱外接程序的清单结构有严格要求:Requirements元素下的Sets集合只能包含一个Set元素,而且这个元素的名称必须是Mailbox——不能在这里添加IdentityAPI这类其他Set。
为什么会这样?
IdentityAPI的支持并不是通过Requirements.Sets来声明的,它的启用依赖于两个关键配置:
- 正确的权限声明
- 关联Azure AD应用的配置
正确的修改步骤
移除错误的Set声明
把Requirements里的<Set Name="IdentityAPI" MinVersion="1.1" />删掉,只保留Mailbox的Set:<Requirements> <Sets> <Set Name="Mailbox" MinVersion="1.1" /> </Sets> </Requirements>添加权限声明
在清单的根节点下(和Requirements同级)添加Permissions元素,指定你的外接程序需要的权限级别,比如:<Permissions>ReadWriteMailbox</Permissions>这个权限级别足够支持
getAccessTokenAsync的调用。配置WebApplicationInfo(关键步骤)
要使用getAccessTokenAsync,你需要把外接程序关联到Azure AD应用,所以要在清单的VersionOverrides部分添加WebApplicationInfo配置:<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0"> <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1"> <WebApplicationInfo> <Id>你的Azure AD应用程序ID</Id> <Resource>https://outlook.office365.com</Resource> <ApplicationPermissions> <Permission>Mail.ReadWrite</Permission> </ApplicationPermissions> </WebApplicationInfo> <!-- 这里保留你原本的DesktopFormFactor等配置 --> </VersionOverrides> </VersionOverrides>注意替换
Id为你在Azure AD中注册的应用ID,ApplicationPermissions可以根据你的实际需求调整。
完成这些修改后,重新部署清单应该就能正常启动外接程序,并且可以调用getAccessTokenAsync获取访问令牌了。
内容的提问来源于stack exchange,提问作者nmrlqa4
相关产品推荐
相关产品推荐

