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

NextJS集成Auth0调用getAccessToken缺refresh token报错

问题原因

配置存在两个核心错误,导致session中没有存储refresh token:

  1. useRefreshTokens 配置项位置错误:该参数是handleLogin方法的顶层配置,不属于authorizationParams嵌套字段,你当前把它写在authorizationParams内部,SDK无法识别该配置,不会将Auth0返回的refresh token持久化到session中,后续调用getAccessToken并开启refresh: true时,自然拿不到refresh token触发报错。
  2. 旧session缓存问题:如果修改配置前你已经完成过登录,本地存储的旧session本身是在未正确配置refresh token逻辑时生成的,本身就不包含refresh token字段,改完配置不重新登录也会触发该错误。
修复方案

按以下步骤调整即可:

  • 修正[...auth0].ts的配置层级,将useRefreshTokens挪到与authorizationParams平级的位置,修正后代码如下:
export default handleAuth({
    async login(req, res) {
        try {
            await handleLogin(req, res, {
                // 刷新令牌配置放在handleLogin顶层,不要嵌套在authorizationParams内
                useRefreshTokens: true,
                authorizationParams: {
                    audience: "gateway.dev.abcdDomain.com",
                    scope: "openid profile email offline_access",
                },
            });
        } catch (error) {
            res.status(error.status || 400).end(error.message);
        }
    },
})
  • 登录Auth0管理后台,进入对应应用的设置页面,找到Refresh Token相关配置,开启刷新令牌功能,确认应用允许发放offline_access对应的refresh token权限。
  • 清除浏览器下当前站点的所有cookie缓存,重新走完整登录流程,新生成的session会正确存储refresh token,调用getAccessToken时不会再触发该报错。

注:你当前写的afterRefresh回调仅删除idToken字段,不会影响refresh token的读取,不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:57:31