每个 error 值意味着什么、该谁改、怎么一眼定位。
本站严格遵守 RFC 6749 §4.1.2.3:在 redirect_uri 逐字节匹配成功之前,不存在"回跳"这条出路。
error= → 说明 client_id 与 redirect_uri 都对得上,问题在参数层。| error | 含义 | 该谁改 |
|---|---|---|
invalid_request |
client_id 未登记或未通过审核/被停用;缺 redirect_uri;response_type 不是 code;缺 PKCE;challenge 长度/字符集不合;method 不是 S256 |
看下面第 1、2 条 |
invalid_scope |
请求了本站不认的 scope(含 openid、含本站未开放的字段) |
接入方 |
access_denied |
用户在同意页点了「拒绝」 | 不是故障,按"用户取消"处理 |
⚠️ authorize 阶段没有 invalid_client:client_id 不存在与"存在但没审核通过/被停用"都回 invalid_request,
而且不回跳 —— 错误回跳本身会变成"探测哪些 client_id 存在"的信号。invalid_client(401) 只在 token / revoke 阶段出现。
| error | 含义 | 处理建议 |
|---|---|---|
invalid_grant |
授权码已用过/已过期;verifier 不符;refresh_token 复用或被撤销 | 丢回授权页重新走一遍,不要重试同一个串 |
invalid_client |
secret 错、应用被停用或未过审 | 提示运维去后台查应用状态 |
unsupported_grant_type |
本站根本不支持这个 grant_type(只支持 authorization_code / refresh_token / client_credentials) |
检查你拼的 grant_type 有没有拼错 |
unauthorized_client |
本站支持这个类型,但这个应用没被允许用它(不在登记时勾的授权类型里) | 改应用配置,不是改代码 |
401 + WWW-Authenticate: Bearer error="invalid_token", error_description="..."。
常见三种 error_description,含义完全不同:
client_credentials 签的机器票去打 userinfo 了。status=1 且 audit_status=1 才能签发。自助申请的应用默认是待审核,
这不是 bug —— 没有这一条,"审核"就只是个展示字段,任何人都能自助拿到一个能签票的应用。endpoint / client_id / grant_type / status / error,
工单里请带上 client_id 和大致时间点。Cache-Control: no-store令牌与错误响应都不该被中间缓存。如果你在浏览器后退时看到"旧的 code 又出现一次", 那是你自己的页面缓存了回调结果,与本站无关。
最近更新:2026-10-10 08:04