Skip to content

签名交换端点(account.sso.token) ​

用于把授权码 code 换成 OAuth access_token。

本端点为标准 OAuth Token 端点:无需任何开放平台签名,可直接配置为标准 OAuth 框架的 token_endpoint。

请求地址 ​

  • POST /api/proxy/account/sso/token

认证方式 ​

标准形式(推荐),二选一:

  1. client_secret_post:把 client_id、client_secret 放在请求体中(见下方参数)
  2. client_secret_basic:Authorization: Basic base64(client_id:client_secret),请求体中省略这两个参数

兼容说明:携带开放平台签名(Authorization: Bearer <开放平台签名> 或 X-Api-Key)的旧请求仍按原有代理方式处理,需要 account.sso.token 权限节点。

请求体参数 ​

支持 application/x-www-form-urlencoded(标准,推荐)或 application/json,参数会按原格式转发:

  • grant_type:固定 authorization_code
  • code:授权阶段返回的授权码
  • redirect_uri:授权时使用的回调地址(需保持一致)
  • client_id:应用 ID(vap_xxxx)(使用 client_secret_basic 时可省略)
  • client_secret:应用 AK(使用 client_secret_basic 时可省略)

application/x-www-form-urlencoded 示例:

text
grant_type=authorization_code
code=CODE_FROM_CALLBACK
redirect_uri=https%3A%2F%2Fdsv.pub
client_id=vap_inzba7z2qbhgsk2y
client_secret=YOUR_APP_AK

请求示例(标准形式,无需开放平台签名) ​

http
POST /api/proxy/account/sso/token HTTP/1.1
Host: open-global.vdsentnet.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=CODE_FROM_CALLBACK&redirect_uri=https%3A%2F%2Fdsv.pub&client_id=vap_inzba7z2qbhgsk2y&client_secret=YOUR_APP_AK

响应示例 ​

json
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRJZCI6MzUsInVzZXJJZCI6MTAwMDEsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUiLCJ0eXBlIjoib2F1dGgiLCJqdGkiOiIqKioqKiIsImlhdCI6MTc3NDA1NTc3OSwiZXhwIjoxNzc0MDU1Nzg5fQ.<SIGNATURE>",
  "token_type": "Bearer",
  "expires_in": 31556952,
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRJZCI6MzUsInVzZXJJZCI6MTAwMDEsInR5cGUiOiJyZWZyZXNoIiwianRpIjoiKioqKioiLCJpYXQiOjE3NzQwNTU3NzksImV4cCI6MTc3NjY0Nzc3OX0.<SIGNATURE>",
  "scope": "openid profile",
  "requestId": "435e1d38-e4b6-4224-a629-8927b81c96cc"
}

常见错误 ​

json
{
  "error": "invalid_grant",
  "error_description": "无效的授权码或重定向URI不匹配"
}

镜像自 developer.vds.pub/docs