Outlook SSO插件调用getAccessToken遇13000错误求助
问题排查方案
一、解决OfficeRuntime.auth.getAccessToken返回13000错误
验证
WebApplicationInfo配置位置与格式
确保WebApplicationInfo节点直接位于VersionOverrides最外层,不能嵌套在Hosts或其他子节点内。正确结构示例:<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0"> <!-- 其他配置(如Hosts、Requirements等) --> <WebApplicationInfo> <Id>你的Azure AD应用客户端ID</Id> <Resource>https://outlook.office.com</Resource> <Scopes> <Scope>Mail.Read</Scope> <Scope>profile</Scope> </Scopes> </WebApplicationInfo> </VersionOverrides>注意:
Id必须是Azure AD应用的客户端ID(不是对象ID),Resource固定为https://outlook.office.com,Scopes需包含插件所需的合法权限(如Mail.Read、User.Read)。确认Azure AD应用权限配置
- 登录Azure门户,找到对应应用,在「API权限」中添加所需的Microsoft Graph权限(如
Mail.Read),并确保已授予管理员同意(针对租户级权限)。 - 避免使用超出插件需求的权限,权限不足或未授权会导致身份验证失败。
- 登录Azure门户,找到对应应用,在「API权限」中添加所需的Microsoft Graph权限(如
清除插件缓存并重新部署
- Outlook桌面端:依次点击「文件」→「选项」→「加载项」→「COM加载项」,禁用并重新启用插件;或删除插件缓存目录(通常在
%LOCALAPPDATA%\Microsoft\Office\16.0\Wef\下)。 - Outlook网页端:使用隐身窗口测试,或清除浏览器缓存后重新加载插件。
- Outlook桌面端:依次点击「文件」→「选项」→「加载项」→「COM加载项」,禁用并重新启用插件;或删除插件缓存目录(通常在
检查
getAccessToken调用参数
确保调用时参数格式正确,示例:OfficeRuntime.auth.getAccessToken({ allowSignInPrompt: true, allowConsentPrompt: true, forMSGraphAccess: true }).then(token => { // 使用令牌调用API }).catch(error => { console.error(error); });其中
forMSGraphAccess: true会自动处理Microsoft Graph的权限范围,适合大多数场景。
二、解决Yeoman脚手架configure-sso命令报错"Unable to set tenant reply urls. ERROR: Bad Request..."
检查执行账号权限
执行configure-sso命令的Microsoft账号必须是Azure AD租户的全局管理员或应用程序管理员,否则无权限修改应用的回复URL配置。验证租户ID与回复URL格式
- 确认命令中输入的租户ID正确(可在Azure门户「Azure Active Directory」→「属性」中查看),避免输入错误导致请求到无效租户。
- 回复URL必须是HTTPS协议(本地测试允许
https://localhost:xxxx),不能包含空格或特殊字符,且需与插件的启动URL一致。
手动检查Azure AD应用的回复URL
登录Azure门户,找到Yeoman自动创建的应用,进入「身份验证」→「平台配置」,检查是否已存在重复或格式错误的回复URL。若有,删除错误条目后重新执行configure-sso命令。确认Node.js版本兼容性
Yeoman的Office插件脚手架要求Node.js版本≥14.x,过低版本可能导致API请求失败。执行node -v检查版本,若低于要求则升级Node.js后重试。
内容的提问来源于stack exchange,提问作者Jason_Hough
相关产品推荐
相关产品推荐

