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

Office单点登录(SSO)加载项切换账户未生效问题咨询

解决Office SSO加载项切换账户无需重启的方案

可以不用关闭并重新打开加载项,通过监听Office账户切换事件并重置身份验证状态即可实现,具体操作如下:

  • 监听账户切换事件:Office提供ActiveAccountChanged事件用于捕获客户端账户切换动作,在加载项初始化阶段注册该事件的监听器。
  • 清理旧身份凭证:切换账户后,清除之前缓存的token、用户信息;若使用Yeoman生成项目默认依赖的MSAL.js,需清空MSAL实例的缓存或直接重置实例。
  • 重新触发SSO流程:调用获取新账户身份凭证的方法,更新加载项内的用户信息及业务逻辑依赖的身份数据。

代码示例

在任务窗格核心逻辑文件(如taskpane.js)中添加如下处理:

Office.onReady(async () => {
  // 注册账户切换事件监听器
  Office.context.mailbox.addHandlerAsync(Office.EventType.ActiveAccountChanged, handleAccountSwitch);
  // 初始化加载当前账户信息
  await loadCurrentUserInfo();
});

async function handleAccountSwitch() {
  // 获取项目中的MSAL实例(根据项目实际实例获取方式调整)
  const msalInstance = getMsalInstance();
  // 清空MSAL缓存,移除旧账户凭证
  await msalInstance.clearCache();
  
  // 重新加载新账户的用户信息
  await loadCurrentUserInfo();
}

// 项目中原有的加载用户信息方法(示例)
async function loadCurrentUserInfo() {
  const token = await getAccessToken(); // 项目内获取SSO token的方法
  const userInfo = await fetchUserProfile(token); // 调用接口获取用户信息
  // 更新界面显示的用户名、邮箱等内容
  document.getElementById('username').textContent = userInfo.name;
  document.getElementById('email').textContent = userInfo.email;
}

注意事项

  • 确保使用的Office 365客户端版本支持ActiveAccountChanged事件(建议使用最新版客户端)
  • 若加载项内有其他依赖账户状态的业务数据,需同步重置这些状态
  • MSAL实例的缓存清理需彻底,避免残留旧账户token导致身份验证异常

内容的提问来源于stack exchange,提问作者Kees-Jan Hoogland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:55:31