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

Auth0调用/oauth/token端点仅返回access_token缺失id_token问题

问题根因

无法返回id_token、refresh_token和Auth0免费订阅套餐无关,完全是配置和请求参数错误导致,具体问题如下:

  • 缺失OIDC协议要求的scope参数:id_token是OIDC协议的专属返回字段,必须在发起授权跳转(请求/authorize端点)时携带openid scope才会返回;要获取refresh_token需要额外添加offline_access scope。注意scope是授权阶段由用户确认生效的,和生成的授权码code绑定,仅在调用/oauth/token换token阶段传scope没有任何作用。
  • audience参数值错误:audience字段需要填写Auth0后台「APIs」板块中你创建的业务API的唯一标识符(Identifier),你当前填的是登录回调地址https://localhost:3000/login.html,属于无效值,该场景下Auth0只会返回可访问/userinfo端点的不透明access_token,不会返回符合预期的身份凭证和API访问凭证。
  • 未开启离线访问权限:返回refresh_token的前置条件除了添加offline_access scope,还需要在对应Application(和你使用的client_id匹配的应用)的设置页开启「Allow Offline Access」开关。
修复步骤
  1. 修改引导用户跳转Auth0登录页的/authorize请求参数,新增scope字段,参考值:
// /authorize请求参数片段
scope: "openid profile offline_access"

其中openid为必填项(获取id_token必须),profile为可选项(添加后会在id_token中返回用户昵称、头像等基础信息),offline_access为获取refresh_token的必填项。

  1. 修正/oauth/token请求中的audience参数:
    登录Auth0后台进入「APIs」板块,选中你要对接的业务API,复制其Identifier字段值,替换代码中audience的现有值,禁止使用回调地址作为audience值。

  2. 开启离线访问权限:
    进入Auth0后台「Applications」板块,选中当前使用的应用,在设置页找到「Allow Offline Access」选项并开启,保存配置。

  3. 重新走完整授权流程:
    清除浏览器中Auth0相关的cookie和已授权记录,重新跳转授权页完成登录获取新的授权码,使用新授权码调用/oauth/token端点即可正常返回id_token、access_token、refresh_token三个字段。

注意:授权码单次有效,且和发起授权时的参数强绑定,修改配置或授权请求参数后,必须重新走授权流程生成新code,使用旧code请求无法拿到正确结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:09:18