Word Online插件SSO异常:getAccessTokenAsync无响应或报13008错误
解决Word Online中Office插件SSO的13008错误问题
我之前碰到过几乎一模一样的问题,Word Online在SSO这块确实比Excel和PPT要“挑剔”一些,结合你的描述,给你几个针对性的排查和修复方向:
1. 核对Word专属的权限配置细节
虽然你已经配置了<WebApplicationInfo>,但Word对权限范围的校验更严格:
- 如果你手动指定了
resource参数,确认是不是https://graph.microsoft.com这类Word支持的标准资源,自定义资源的快速授权在Word里经常出问题 - 检查清单里的
Permissions节点,有没有包含Files.ReadWrite或者对应Office上下文的必要权限——有些在Excel/PPT里能兼容的权限,Word会直接拦截
2. 修复getAccessTokenAsync()的调用逻辑
首次无响应、二次调用返回13008,大概率是异步请求的状态没处理好,或者重复触发了请求:
- 先加个全局状态标记,避免重复调用,比如:
let isTokenRequestPending = false; function fetchSSOToken() { if (isTokenRequestPending) return; isTokenRequestPending = true; Office.context.auth.getAccessTokenAsync({ allowSignInPrompt: true, allowConsentPrompt: true }, (result) => { isTokenRequestPending = false; if (result.status === "succeeded") { // 处理令牌逻辑 } else { // 13008错误可以延迟重试,给Word足够的会话初始化时间 if (result.error.code === 13008) { setTimeout(fetchSSOToken, 1200); } } }); }
- 另外,Word的上下文初始化比Excel/PPT慢,建议在
Office.initialize完成后延迟1-2秒再发起令牌请求,别刚加载就调用
3. 清理浏览器缓存和会话
浏览器缓存经常会搞砸SSO会话,尤其是Word Online:
- 用隐私模式打开Word Online,重新加载插件测试,排除缓存干扰
- 清除
https://office.live.com和https://login.microsoftonline.com的相关Cookie,然后重新登录 - 确保浏览器是最新版本,旧版Chrome/Firefox对Word的SSO支持有已知问题
4. 检查Azure AD的重定向URI配置
别小瞧这个,Word对重定向URI的要求和其他Office应用不一样:
- 确保你的重定向URI是
https://<你的插件域名>/auth.html(如果用Office默认的重定向页面),并且在Azure AD里标记为「单页应用(SPA)」类型 - 不要加多余的重定向URI,Word会严格校验它和插件清单里的
SourceLocation是否匹配
5. 开启调试日志抓细节
用Office.js的调试模式能看到Word特有的错误提示:
- 在浏览器控制台输入
Office.context.auth.enableDebugLogging(true),然后重新触发令牌请求,查看控制台的详细日志 - 重点看有没有CORS相关的错误,Word Online的CORS策略比Excel/PPT严格很多,要确保你的后端允许Office域名访问
如果以上都试过还是不行,建议做个最小化测试插件——只保留SSO调用逻辑,排除其他代码的干扰。另外,Office Online的区域节点差异也可能导致问题,比如从中国区切换到国际区试试。
内容的提问来源于stack exchange,提问作者InnovateIt
相关产品推荐
相关产品推荐

