Data API
概述
本文介绍 DATA 开发对接的相关内容。
数据接口认证登录
平台对外发布的接口服务(RESTful风格的Http服务)都需要进行认证登录,以保证数据的安全性。目前支持的认证方式只有一种:Bearer Token
。
对接准备
你需要从平台获得一对 client_id 和 client_secret,这是你的应用的唯一标识,用于获取 access_token。
身份认证
当你已经拥有 client_id 和 client_secret 时,你就可以通过以下步骤获取 access_token:
第一步:生成签名
签名的生成规则:client_id + 当前时间戳 + client_secret,然后进行 MD5 加密,加密后的 32 位大写字符串即为签名字符串。
-
签名生成示例:
- javascript
- c#
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
const client = "输入你的 client_id"
const secret = "输入你的 client_secret"
const timestamp = Math.ceil(+new Date() / 1000) // 当前时间戳(十位)
const plaintext = `${client}${timestamp}${secret}` // 签名明文
const signature = CryptoJS.MD5(plaintext).toString().toUpperCase(); // 得到签名
console.log(`签名结果:${signature}`)
</script>using System.Security.Cryptography;
var client = "输入你的 client_id";
var secret = "输入你的 client_secret";
var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds() / 1000; // 当前时间戳(十位)
var plaintext = $"{client}{timestamp}{secret}"; // 签名明文
var signature = Convert.ToHexString(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(plaintext))); // 得到签名
Console.WriteLine($"签名结果:{signature}");
第二步:发送认证请求
-
请求方式:POST
-
Content-Type:
application/json
-
请求参数:
参数名 类型 必填 描述 clientId 字符串 是 客户端(平台提供) time 数字 是 当前时间戳 signature 字符串 是 签名(通过client_id + time + client_secret,然后进行MD5加密,加密后的32位大写字符串即为签名字符串) -
请求示例:
curl --location 'https://localhost/api/TokenAuth/Authenticate' \
--header 'Content-Type: application/json' \
--data '{
"clientId": "openapi",
"time": 1724753509317,
"signature": "B9DBA02F6223468F16E8250D8F080CFF"
}' -
响应参数:
参数名 参数二级 描述 code 状态码 data 结果数据 accessToken 访问令牌 expireInSeconds 有效时间(秒) success 是否成功 msg 错误信息 -
响应示例:
{
"code": 200,
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc0V4dGVybmFsIjpmYWxzZSwidXNlcklkIjoiNDMyNDMwMDg0OTY4Njc3Nzg1NyIsImFjY291bnQiOiJXZWxsaW5ndG9uQXBpIiwicmVhbE5hbWUiOiJXZWxsaW5ndG9uQXBpIiwidXNlclR5cGUiOiJkZGFfY2xpZW50Iiwic3lzdGVtIjoiSE9NRSIsImVtYWlsIjpudWxsLCJhdmF0YXIiOm51bGwsImdsb2JlUm9sZU5hbWUiOm51bGwsImNsaWVudFR5cGUiOjAsIm11c3RDaGFuZ2VQd2QiOmZhbHNlLCJleHAiOjE3Mjg4MDcyMDV9.J0oiH0hzYv72X65DZEOoAxDV6PsNuUuyKhNYkdlaD90",
"expireInSeconds": 86400
},
"success": true,
"msg": null
}