授权码流程第 3 步(服务端/客户端调用,无需用户登录态)。支持 grant_type:authorization_code(用授权码换令牌)与 refresh_token(刷新访问令牌)。请求体支持 application/x-www-form-urlencoded(推荐,RFC 标准)或 application/json,按 Content-Type 自动识别。客户端认证:仅支持在请求体中传 client_id + client_secret(client_secret_post),不支持 HTTP Basic(Authorization 头会被忽略);public 客户端无需 client_secret。authorization_code:code 与 redirect_uri 必填,redirect_uri 须与 approve 时完全一致;授权码一次性、10 分钟有效;若授权时使用了 PKCE 则必须传 code_verifier(43128 位 [A-Za-z0-9-._]),public 客户端必须使用 PKCE。refresh_token:refresh_token 必填,会签发新 access_token 并使旧令牌失效,refresh_token 本身保持不变且过期时间不延长。被封禁用户无法换取/刷新令牌。所有响应均为 RFC 6749 风格:成功为标准令牌 JSON,失败为 {error, error_description},均不使用 code/msg/data 包装。
鉴权:OAuth2 客户端鉴权(client_id / client_secret)
错误响应:
| code | msg |
|---|---|
| 400 | invalid_request: 请求参数错误: <校验错误详情> |
| 401 | invalid_client: 无效的客户端ID |
| 401 | invalid_client: 应用已停用 |
| 401 | invalid_client: 客户端认证失败 |
| 400 | invalid_request: 缺少code或redirect_uri参数 |
| 400 | invalid_grant: 无效的授权码 |
| 400 | invalid_grant: 授权码已过期 |
| 400 | invalid_grant: 授权码已被使用 |
| 400 | invalid_grant: 授权码验证失败 |
| 400 | invalid_grant: public 客户端必须使用 PKCE |
| 400 | invalid_request: 缺少 code_verifier 参数 |
| 400 | invalid_grant: code_verifier 校验失败 |
| 400 | invalid_grant: PKCE 校验失败 |
| 400 | invalid_grant: 用户不可用 |
| 400 | invalid_request: 缺少refresh_token参数 |
| 400 | invalid_grant: 无效的刷新令牌 |
| 400 | invalid_grant: 刷新令牌已过期 |
| 400 | invalid_grant: 客户端ID不匹配 |
| 400 | unsupported_grant_type: 不支持的grant_type: <grant_type> |
| 500 | server_error: 内部错误 |
| 500 | server_error: 授权码处理失败 |
| 500 | server_error: 查询用户状态失败 |
| 500 | server_error: 生成令牌失败 |
| 500 | server_error: 创建令牌失败 |