本接口用于获取应用授权认证所需的访问令牌(access token)。该令牌具有有效期限制,过期后将无法继续访问需要授权保护的接口。
调用方在请求需要授权的接口时,应实现令牌的重试及自动刷新机制。当调用授权接口返回错误码 1004(令牌错误)或 1006(令牌失效)时,表示当前访问令牌无效或已过期,此时应重新调用本接口获取新的访问令牌,并使用新令牌重试原请求。
GET /openapi/oauth/token| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
app_id | string | 是 | 您的应用ID(即 api_id) |
device_id | string | 是 | 设备唯一标识(建议使用机器码或 UUID) |
rand_str | string | 是 | 随机字符串(建议 8~32 位,防重放) |
timestamp | string | 是 | 当前时间戳(Unix 秒级) |
signature | string | 是 | 签名,算法见下方 |
1. 将 app_id、device_id、rand_str、timestamp 和 app_secret 五个字段按 key 字典序升序排列
2. 拼接为 URL 查询字符串格式(key=value&key=value),注意值需要做 URL 编码
3. 对拼接结果做 MD5 ,取 32 位小写字符串app_id → app_secret → device_id → rand_str → timestampapp_id = 10086
device_id = device_abc123
rand_str = x9k2m4
timestamp = 1713780600
app_secret = my_secret_keyapp_id=10086&app_secret=my_secret_key&device_id=device_abc123&rand_str=x9k2m4×tamp=1713780600signature = md5(上述字符串) → 32位小写hex注意:OAuth 签名与回调通知签名(第 5 节)的区别在于 OAuth 使用 URL 编码拼接(等同于 http_build_query),回调通知使用原始值拼接。两者不可混用。
1. 生成随机字符串 rand_str(建议每次不同)
2. 获取当前时间戳 timestamp
3. 按上述算法计算 signature
4. GET /openapi/oauth/token?app_id=xxx&device_id=xxx&rand_str=xxx×tamp=xxx&signature=xxx
5. 返回 { "access_token": "xxx", "expires_in": 7200 }
6. 后续 API 调用在 Header 或参数中携带 access_token安全建议: rand_str每次请求应不同,timestamp应在合理时间范围内(建议 ±5 分钟),防止重放攻击。
curl --location 'https://tinterface.mcake.com/openapi/oauth/token?app_id=92239814&device_id=test_device_69fed1832e0c9&rand_str=5ENrv0zfFi8vnWoS7u3scGcLc3cLyVCm×tamp=1778307459&signature=b68f067b78b8847d88069100d4455241'{
"code": 0,
"msg": "Success",
"data": {
"access_token": "7b093c1a94df6123521d1219552c54a2",
"expires_in": 7200
}
}