近期更新后OfficeRuntime.auth.getAccessToken调用挂起问题咨询
OfficeRuntime.auth.getAccessToken 调用挂起问题解决方案
这是近期Office桌面端版本更新后出现的大面积共性问题,大量Outlook插件开发者都提交了同类反馈。
问题根因
受影响的主要是2309(内部版本16827.20130)及以上Current Channel版本的桌面端Outlook,版本更新后OnCompose事件触发时,Outlook内部资源调度逻辑存在死锁缺陷,会阻塞OfficeRuntime.auth.getAccessToken的异步回调,导致调用既不返回结果也不抛出错误。微软已经在2311预览版中推送了修复补丁,后续正式版更新后会自动恢复。
可用临时规避方案
- 调用
OfficeRuntime.auth.getAccessToken时显式传入allowSignInPrompt: true参数,即使业务场景不需要弹出登录弹窗,新增该参数也可以绕开死锁逻辑 - 将
OnCompose事件中同步执行的token获取逻辑,延迟300~500ms异步执行,避开Outlook新建撰写窗口时的资源抢占高峰 - 调用时增加超时逻辑,避免插件业务逻辑直接卡死,参考代码如下:
// 带超时的getAccessToken封装 const getToken = async () => { const timeoutMs = 5000 return Promise.race([ OfficeRuntime.auth.getAccessToken({ allowSignInPrompt: true, allowConsentPrompt: false }), new Promise((_, reject) => { setTimeout(() => reject(new Error('access token request timeout')), timeoutMs) }) ]) }
其他排查点
确认插件清单的WebApplicationInfo节点配置没有变动,scopes字段必须完整包含openid profile offline_access以及你申请的Graph API权限,缺失权限在新版本中也会触发无报错的调用阻塞。
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

