接口调用规则
请求参数
除了HTTP协议中规定的头信息以外,本开放接口额外做以下头信息要求:
参数名称 | 参数类型 | 说明 |
---|---|---|
ContentType | String | 请填写text/plain;charset=UTF-8 |
accessToken | String | 大多数接口,需要通过验证身份以后才能访问,需要携带该头信息;请从OAuth接口 获取的accessToken,Token有效时间4小时 |
CommitDate | Long | 当前时间戳的毫秒数。可以参考java的System.currentTimeMillis()方法生成;(如果未携带该头信息,或与服务端的时间差超过 15 分钟,则云端拒绝该请求) |
signValue | String | 签名校验请求的合法性 |
在所有请求的返回值里,有一些公共的字段:
参数名称 | 参数类型 | 说明 |
---|---|---|
code | Integer | 业务返回编码:0=成功 |
message | String | 业务返回消息 |
requestID | String | 当前业务的提交流水号,便于后期查询定位 |
timestamp | Long | 当前业务提交的时间戳(毫秒数) |
token | String | OAuth接口获取的accessToken,有效时间4小时,超时后需要重新申请 |
codeType | Integer | 业务返回数据编码格式:0=不编码,1=AES,3=Base64 |
iszip | Integer | 业务发挥的数据压缩标记:0=不压缩,1=zip压缩 |
data | String | 业务数据 |
签名规则
第一步,拼装待签名字符串
ContentMd5:为请求Body内容的md5(32位小写)
CommitDate:为请求头信息中的CommitDate
accessToken:为登录后获取(Oauth2登陆接口值为空字符串)
AppSecret:为分配给接入方的密钥(Oauth2登陆接口值为空字符串)
签名字符串必须为UTF-8格式,含有中文字符的签名串必须先进行UTF-8编码
本文档中 md5 相关的结果都转为小写处理
第二步,计算签名
签名示例
签名内容 | 执行结果 | 示例描述 |
---|---|---|
Json信息: { "client_appkey":"2R68Fute8FeeeDeeyy8rF7J", "client_secret":"bfd850c3333c4c62d35ed9496fedef1c" } | Base64结果(没有换行符): eyJjbGllbnRfYXBwa2V5IjoiMlI2OEZ1dGU4Rm VlZURlZXl5OHJGN0oiLCJjbGllbnRfc2VjcmV0 IjoiYmZkODUwYzMzMzNjNGM2MmQzNWVkOTQ5Nm ZlZGVmMWMifQ== | |
请求body(没有换行符): eyJjbGllbnRfYXBwa2V5IjoiMlI2OEZ1dGU4Rm VlZURlZXl5OHJGN0oiLCJjbGllbnRfc2VjcmV0 IjoiYmZkODUwYzMzMzNjNGM2MmQzNWVkOTQ5Nm ZlZGVmMWMifQ== | 请求body Md5结果: 26b2b53330461405e46c574c26f366f8 | Base64字符串不能有换行符 |
待签名字符串: signValue=HTTPMethod_ContentMd5_CommitDate_accessToken_appSecret =POST_26b2b53330461405e46c574c26f366f8_CommitDate_xxx_zzz | 签名值过程 md5之后结果: a4b6e0831495c1a8a2afa88f47b3d076 | 1、CommitDate请替换成实际的时间戳,如:1581588537349的格式 2、xxx请替换成实际取到的accessToken, 如:63518b8d441a42f3816d877a3c924781@@1726459567923 3、zzz请替换成实际的appSecret,如: rC1r9ueqrePteeeG9Prterrr8ue8AyP9988Fr9J9 |
上述举例的数据是为了验证签名算法,请先按照举例的数据验证 md5 和 base64 算法,看看生成的签名值是否正确,实际请求请按照实际数据签名。
API鉴权调用常见问题
2、login接口signValue签名中accessToken和AppSecret直接使用 空字符串。
3、header中的CommitDate和signValue签名中的CommitDate需要相同。
4、确认MD5函数的结果是否正确,校验使用https://www.sojson.com/encrypt_md5.html
5、body中请求参数和signValue签名中的请求参数要一致,使用字符串,不要有空格和回车。
6、login请求参数:
修改于 2024-09-29 03:13:23