oauth.accessToken
此接口为平台应用(APP)服务端实现,由SUD OpenPaaS服务端调用。
获取访问令牌(access_token)。
调用方式:
- HTTPS 调用
HTTPS 调用
http
POST {access_token_webhook}请求参数 - Header
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| timestamp | long | 是 | 毫秒时间戳,遵循通用防重放规则 | |
| nonce | string | 是 | 32位以内随机字符串,遵循通用防重放规则 | |
| sign | string | 是 | RSA-SHA256签名,遵循通用签名规则 | |
| client_secret | string | 是 | 平台应用(APP)分配给SUD的应用密钥(应用级鉴权密钥,仅放在Header传递) |
请求参数 - Body
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| client_id | string | 是 | 平台应用(APP)分配给SUD的应用ID | |
| grant_type | string | 是 | 固定值:authorization_code(授权码模式) | |
| code | string | 是 | 从 /api/open/oauth/authorize 接口获取的授权码 | |
| redirect_uri | string | 是 | 回调地址,需与申请授权码时填写的地址完全一致 |
返回值
Object
返回的 JSON 数据包
| 属性 | 类型 | 说明 |
|---|---|---|
| ret_code | integer | 响应码:0 表示成功,非0 表示失败 |
| ret_msg | string | 响应描述信息:成功返回 "success",失败返回具体错误原因 |
| data | object | 业务数据体(仅 ret_code=0 时返回有效数据) |
| data.access_token | string | 平台应用(APP) 颁发的访问令牌,后续拉取游戏/厂商数据接口需携带此令牌鉴权 |
| data.refresh_token | string | 刷新令牌,用于 access_token 过期后重新获取新令牌(有效期长于access_token) |
| data.expires_in | integer | access_token 有效期(单位:秒),默认7200秒(2小时),以接口返回值为准 |
| data.cp_id | string | 平台应用(APP) 侧OAuth层开发者/厂商唯一标识,与业务层cp_id一一映射 |
ret_code 的合法值
| 值 | 说明 | 最低版本 |
|---|---|---|
| 0 | 请求成功 | |
| 40029 | invalid code,授权码无效或已过期 | |
| 40030 | invalid sign,检查签名算法及公私钥是否匹配 | |
| 40101 | client_secret mismatch,检查 Header 中的密钥是否正确 |
cURL 请求
bash
curl -X POST \
{access_token_webhook} \
-H 'Content-Type: application/json; charset=utf-8' \
-H 'timestamp: 1668512806000' \
-H 'nonce: abcdef1234567890' \
-H 'sign: YOUR_RSA_SIGNATURE' \
-H 'client_secret: YOUR_CLIENT_SECRET' \
-d '{
"client_id": "YOUR_CLIENT_ID",
"grant_type": "authorization_code",
"code": "YOUR_AUTH_CODE",
"redirect_uri": "https://your.domain.com/callback"
}'成功返回
json
{
"ret_code": 0,
"ret_msg": "success",
"data": {
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 7200,
"cp_id": "dev_123456789"
}
}错误返回
json
{
"ret_code": 40029,
"ret_msg": "invalid code"
}