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

MSAL.js中Token响应缺失offline_access Scope问题求助

Outlook加载项MSAL.js中offline_access scope不显示、无法获取刷新令牌的解决办法
  • 确认MSAL.js版本与授权流程兼容性
    MSAL.js v2及以上版本中,offline_access属于隐式请求的权限,但只有**首次交互式登录(比如loginPopup、loginRedirect)**时才会颁发刷新令牌。后续静默请求或非首次交互式请求,刷新令牌会被自动缓存,但不会出现在响应的scopes字段里。如果用的是v1.x版本,必须显式在请求scopes里加offline_access,而且得是交互式请求——静默请求拿不到刷新令牌。

  • 检查Azure AD应用注册配置

    • 确认应用注册的「认证」标签下,重定向URI是Outlook加载项对应的地址(格式一般是https://outlook.office.com/owa/[你的域名]/[加载项ID]/auth.html),类型选SPA或Web,匹配你的加载项类型。
    • 「API权限」里,offline_access必须是已同意的状态:租户内应用要管理员同意,个人账号要用户自己同意。注意offline_access是委托权限,必须完成同意流程。
  • 调整令牌请求逻辑

    • 把tokenRequest里的prompt: "select_account"和forceRefresh: true去掉,除非你确实需要强制用户重新选账号——频繁用forceRefresh会干扰刷新令牌的缓存逻辑。
    • 首次登录必须用loginPopup或loginRedirect,而且loginRequest里要包含offline_access。只有首次交互式登录才会触发刷新令牌颁发,之后用acquireTokenSilent时,MSAL会自动用缓存的刷新令牌获取新访问令牌。
    • 可以调整你的getTokenPopup函数,先完成首次登录再获取令牌:
      // 首次登录并获取令牌的逻辑
      function loginAndGetToken(myMSALObj) {
          return myMSALObj.loginPopup(loginRequest)
              .then(loginResponse => {
                  console.log("首次登录完成,刷新令牌已缓存");
                  return getTokenPopup(tokenRequest, myMSALObj, loginResponse.account.username);
              });
      }
      
  • 正确读取缓存与令牌响应
    MSAL.js会自动把刷新令牌存在localStorage或sessionStorage(看你配置),不会在acquireTokenPopup或acquireTokenSilent的响应里直接返回。你不用手动提取刷新令牌,MSAL会自动处理令牌刷新的逻辑。另外,响应里的scopes字段只会显示资源权限(比如User.Read),offline_access是特殊权限,不会出现在这个列表里——只要首次请求加了且用户同意,刷新令牌就已经在缓存里了。

  • 适配Outlook加载项的沙盒限制
    Outlook加载项运行在Office沙盒里,部分存储API有限制。确保cacheLocation设为localStorage,storeAuthStateInCookie设为true,兼容Office环境。同时检查manifest.xml里的WebApplicationInfo节点配置正确:

    <WebApplicationInfo>
        <Id>你的ClientId</Id>
        <Resource>https://outlook.office.com</Resource>
        <Scopes>
            <Scope>User.Read</Scope>
            <Scope>Mail.ReadWrite</Scope>
            <Scope>offline_access</Scope>
        </Scopes>
    </WebApplicationInfo>
    

内容的提问来源于stack exchange,提问作者Waqar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:05:21