跳转至

OAuth Token 换取

用于将授权码或刷新令牌换成 OpenASA 发放的 token。

方法与路径

  • 方法:POST
  • 路径:/oauth/token
  • 鉴权:不依赖浏览器会话

请求体

支持 JSON 和表单两种格式。

  • 公共字段:
  • grant_typeauthorization_coderefresh_token
  • client_id
  • grant_type=authorization_code 时:
  • code
  • redirect_uri
  • code_verifier
  • grant_type=refresh_token 时:
  • refresh_token

Refresh token 分支行为

grant_type=refresh_token 时,端点会:

  • 校验 client_id
  • 校验 refresh token 是否存在、是否过期、是否已撤销
  • 撤销旧 refresh token
  • 重新签发新的 access_tokenrefresh_tokenid_token

成功响应

200 OK

{
  "token_type": "Bearer",
  "access_token": "<access_token>",
  "id_token": "<id_token>",
  "refresh_token": "<refresh_token>",
  "expires_in": 3600,
  "scope": "openid profile email"
}

Refresh token 请求示例

JSON:

curl -X POST https://api.asahub.ai/api/oauth/token \
  -H 'Content-Type: application/json' \
  -d '{
    "grant_type":"refresh_token",
    "refresh_token":"OLD_REFRESH_TOKEN",
    "client_id":"app-a"
  }'

表单:

curl -X POST https://api.asahub.ai/api/oauth/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=refresh_token' \
  --data-urlencode 'refresh_token=OLD_REFRESH_TOKEN' \
  --data-urlencode 'client_id=app-a'

失败情况

  • 400
  • grant_type 非法
  • 授权码无效/过期/已消费(authorization_code 分支)
  • redirect_uri 非法(authorization_code 分支)
  • code_verifier 非法(authorization_code 分支)
  • refresh token 缺失/无效/过期/已撤销(refresh_token 分支)