应用级 Token
阅读指引:本篇是《开放平台服务端 API 指南》的第 3 部分。接口基础地址、通用约定与各接口请求限制,请先阅读《服务端 API 概览》。
4. 获取应用级 Token
应用级 Token 表示应用自身,不代表任何用户。Token 接口接受 application/x-www-form-urlencoded 或 JSON;推荐应用后端使用 HTTP Basic 传递凭据。
POST /openapi/v1/oauth2/token
curl -X POST "${OPENAPI_BASE_URL}/openapi/v1/oauth2/token" \
-u "${APP_KEY}:${APP_SECRET}" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=client_credentials"
| 请求字段/凭据 | 位置 | 必填 | 类型与规则 |
|---|---|---|---|
grant_type |
body | 是 | string;获取应用 Token 时固定为 client_credentials。 |
client_id |
HTTP Basic 用户名 | 是 | 应用的 app_key。也可在 body 使用 client_id 或兼容字段 app_key。 |
client_secret |
HTTP Basic 密码 | 是 | 应用的 app_secret。也可在 body 使用 client_secret 或兼容字段 app_secret。 |
如果同时通过 Basic 和 body 传递凭据,各处值必须完全一致;同时提交不同的 client_id/app_key 或 client_secret/app_secret 会返回 invalid_request。不得在 URL query 中传递密钥。
{
"access_token": "atk_mim_xxx",
"refresh_token": "rtk_mim_xxx",
"expires_in": 7200,
"refresh_expires_in": 2592000,
"token_type": "Bearer",
"scope": "user:profile:read material:manage message:send:user",
"app_key": "svc_app_xxx"
}
| 响应字段 | JSON 类型 | 含义与单位 |
|---|---|---|
access_token |
string | 应用访问令牌;调用 OpenAPI 时放入 Authorization: Bearer ...。 |
refresh_token |
string | 刷新令牌,只能保存在应用后端;成功刷新后会轮换。 |
expires_in |
integer | access_token 从响应生成时起的剩余有效时间,单位秒。 |
refresh_expires_in |
integer | refresh_token 的剩余有效时间,单位秒。 |
token_type |
string | 固定为 Bearer。 |
scope |
string | 该 Token 实际持有的 Scope,以单个空格分隔;不能假设等于应用以后新增的 Scope。 |
app_key |
string | Token 所属应用的公开标识。 |
刷新 Token
curl -X POST "${OPENAPI_BASE_URL}/openapi/v1/oauth2/token" \
-u "${APP_KEY}:${APP_SECRET}" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=refresh_token" \
--data-urlencode "refresh_token=${REFRESH_TOKEN}"
| 请求字段 | 必填 | 类型与规则 |
|---|---|---|
grant_type |
是 | string;固定为 refresh_token。 |
refresh_token |
是 | string;此前为同一应用签发且仍有效的应用级或用户级 refresh token。 |
| 客户端凭据 | 是 | 仍须使用该 Token 所属应用的 app_key + app_secret,传递规则与首次换 Token 相同。 |
刷新成功返回一组新的 access_token/refresh_token 及有效期字段。应用级响应包含 app_key;用户级响应包含 client_id 和 user_open_id。
刷新令牌轮换同一个旧 refresh token 并发刷新只允许一次成功。成功后旧 access token 和旧 refresh token 均失效;调用方必须原子替换本地保存的整组 Token。