
签名规则完整的请求 Headers 中有 accesstoken,timestamp,signature 三个参数。
accesstoken 可以在“认证获取token”这个接口中获取(详见下一章)
timestamp 是当前请求的时间戳,输入当前时间即可
signature 是接口签名认证,则需要进行构造。
其中,signature 签名规则如下。
1 构造源串
• GET 请求:
得到所有参数,按照字典升序排列,参照(key=value)用&拼接起来。
原先的参数请求是 c=1&a=a&b=b,排序之后就变成 a=a&b=b&c=1
• POST/PUT/DELETE 请求:
请求的 JSON 直接作为一个完整参数。
• 在基础参数上按顺序加上 token,timestamp:
a=a&b=b&c=1&token=d0f462f8-73d3-4cec-8d7d-11367c264fa6×tamp=1574821902392
{“a”:”a”,”b”:”b”,”c”:1}&token=d0f462f8-73d3-4cec-8d7d-11367c264fa6×tamp=1574821902392
2 URL编码
在第一步“构造源串”中得到的字符串,在此步骤中用来 URL 编码。
除了用普通方法来 URL 编码外,还有几个字符需要特殊处理。
Java 方法:
String sources = getSourceParameters(); //第一步“构造源串”
String newSources = URLEncoder.encode(sources, "UTF8")
newSources = newSources.replace("+", "%20");
newSources = newSources.replace("*", "%2A");
newSources = newSources.replace("~","%7E");
3 加密
• HMAC256 加密
对在第二步得到的字符串进行 HMAC256 编码,HMAC256 编码的 key 为之前的 accesstoken。
• Base64 加密
在 HMAC256 加密之后,再进行一次 Base64 加密。
4 去掉特殊字符
去掉 Base64 加密后之后的\r\n,然后就得到最终的签名。
5 示例
• 源串:
top=30&ro