一般的构造方法这里以eoe网络接口很久前的相关约定为例:
接口根地址:
API_ROOT = http://ws.eoeandroid.com/api/v1
公共测试key:
api_key: 3YXNgING8f5Ugiq9J27XjQ
api_secret: GNBu298hQemoO4INRkAyS5YDtKaq8ds4KTAue45iyE
公共参数:
参数名 | 取值 | 含义 | 备注 |
uniquely_code | 字符串 | 该用户手机的设备号 | 必需,可取设备唯一码 |
api_key | 字符串 | 分配的api_key | 必需 |
nonce | 字符串 | 唯一码 | 必需 |
timestamp | 数字 | 时间戳,标识访问时间 | 必需 |
api_sig | 签名值 | 按照规则计算出来的签名 | 必需 |
alt | 字符串,目前支持xml | 需要返回结果的数据格式 | 可选,默认值: xml |
page | 数字 | 获取结果集的第几页结果 | 可选,默认值: 1 |
limit | 数字 | 结果集每页返回几条结果 | 可选,默认值: 20 |
locale | 字符串,格式为zh-rCN | 当前用户的locale代码 | 可选,默认值:unknown-rUnknown |
PS:
每个接口除了其各自业务逻辑需要的参数外,还需要包含如下公共参数。
鉴权规则:
计算签名值:
api_sig =MD5("api_key"+@api_key+"+"nonce"+@nonce+"timestamp"+@timestamp+"uniquely_code"+@uniquely_code+api_secret)
发送请求:
如上参数列表中的必需的参数,加上计算出来的api_sig通过GET方式发送。
当然还有其它的一些方式,比如将入参首字母排序然后加上“secret key”做hash等等,不过总体来说一般的鉴权方式都大同小异。如果公司接口采用了上面所说方法,而且安全级别要求又特别高的话,建议用NDK实现。