授权数据准备
通过申请获的app_key, app_secret, 注意app_secret不要泄露
签名计算
将
app_key和timestamp添加到请求的参数中将请求体中的参数按照key的字母排序,然后用
=符号连接接key和value,最后将key=value组数据用&符号连接用 app_secret 将第二步生成的字符串做
HmacSHA256做哈希摘要。将第三步生成的摘要值放在请求头headers中,用
sign做headers中的标头名称
注意:
所有接口都需要携带 app_key 和 timestamp 字段
timestamp 的时间单位为秒(正确的值:1781774197)(错误的值:1781774197000)
timestamp 仅五分钟内有效,否则会报错:request timeout(请求超时)
建议每次每次请求都使用当前最新的timestamp,防止出现请求超时的情况
示例
可以使用如下示例的app_key、app_secret、body参数来计算签名并和示例最终的签名结果进行对比验证自己的签名计算是否正确
例如签发的app_key和app_secret如下(以下app_key 和 app_secret 仅作签名计算示例,实际并未真实生效):
app_key: b0d566b0fac064a230ecapp_secret: 59bf531b39d84e8da4d74e7bc200e102
接口请求为 https://ggtools.thinkerx.com/api/order
请求参数为:
{
"account": "17711111111",
"search_key": "四合院",
"page": 2,
"limit": 20
}将 app_key 和 timestamp 添加到请求参数中
{
"account": "17711111111",
"search_key": "四合院",
"page": 2,
"limit": 20,
"app_key": "b0d566b0fac064a230ec",
"timestamp": 1612345678
}将请求体中的参数按照key的字母排序:
{
"account": "17711111111",
"app_key": "b0d566b0fac064a230ec",
"limit": 20,
"page": 2,
"search_key": "四合院",
"timestamp": 1612345678
}然后用 = 符号连接接key和value
{
account=17711111111,
app_key=b0d566b0fac064a230ec,
limit=20,
page=2,
search_key=四合院,
timestamp=1612345678
}将 key=value 组数据用&符号连接
account=17711111111&app_key=b0d566b0fac064a230ec&limit=20&page=2&search_key=四合院×tamp=1612345678
用 app_secret 将第二步生成的字符串做HmacSHA256做哈希摘要,得到最终的签名值。
3bd435960f746563c6dedfc717bf38da604fc209b9e4c8e5291fa72675e5e06a
将第三步生成的摘要值放在请求头headers中,用 sign 做headers中的标头名称
最终请求的body参数:
{
"account": "17711111111",
"search_key": "四合院",
"page": 2,
"limit": 20,
"app_key": "b0d566b0fac064a230ec",
"timestamp": 1612345678
}最终请求的header参数:
{
"content_type": "application/json",
"sign": "3bd435960f746563c6dedfc717bf38da604fc209b9e4c8e5291fa72675e5e06a"
}请求cURL示例:
curl --location 'http://ggtools.thinkerx.com/open-api/token' \
--header 'sign: 3bd435960f746563c6dedfc717bf38da604fc209b9e4c8e5291fa72675e5e06a' \
--header 'Content-Type: application/json' \
--data '{
"account": "17711111111",
"search_key": "四合院",
"page": 2,
"limit": 20,
"app_key": "b0d566b0fac064a230ec",
"timestamp": 1612345678
}'
