6.2 API接口安全

1.通信安全

为了提高API接口的安全性,系统采用AppId / AppSecret 签名通讯协议(在后台-》APP管理-》通信秘钥管理 设置APPID和APPSECRET)

2.接口基本参数,所有API接口的都会包含基本参数

参数名称 参数类型 是否必须 描述
l String 语言标识,cn:表示中文,en:表示英文,后台开启多语言时有效,如果是单语言可不填此参数
Format String 接口返回数据的格式,默认为json,支持json、xml、jsonp三种格式
Version String API接口版本号,默认为1.0
AppID Int AppID,在后台-》APP管理-》APP通信秘钥管理查看
Timestamp Int 获取Unix时间戳。
js获取Unix时间戳的函数:Math.round(new Date().getTime()/1000)
php获取Unix时间戳的函数:time()
Sign String 签名数据,根据AppID、AppSecret计算出的参数签名。参数签名的详细算法见下面小节

3.签名生成

调用 API 时需要对请求参数进行签名验证,服务器会对该请求参数进行验证是否合法的。签名步骤如下:
第1步:参数过滤:过滤值为空的参数
第2步:参数排序:根据参数名称将所有请求参数按照字母先后顺序排序。例如:将foo=1,bar=2,baz=3 排序后为bar=2,baz=3,foo=1
第3步:拼接参数:按"参数名1=参数值1&参数名2=参数值2"拼接成字符串,得到拼装字符串bar=2&baz=3&foo1=1
第4步:生成签名:将拼装字符串链接AppSecret,生成签名值。md5("bar=2&baz=3&foo1=1"+AppSecret);js代码如下:
备注:所有参数值采用UTF-8编码
注意:并不是所有的接口都需要生成签名,通常非保密性的数据不需要签名,如:GetInfo、GetChannel接口等