[TOC] ## 1. 接口使用HTTPS ## 2. Header 中带必要参数 > 所有的接口,header带上以下参数 | 参数 | 说明 | 例子 | | --- | --- | --- | | app_type | 客户端类型(1iOS /2安卓) | 安卓 | | app_device | 手机设备ID | 869118048312573 | | app_model | 手机型号 | OPPO R11t | | app_version | APP应用版本号 | 1.0.1 | | push_device_token | 极光推送设备ID | 100d8559092d402c5c4 | sign | 签名 | 使用user_token+timeline进行AES-256-CBC加密,防伪造/篡改/防重发(服务端校验) | > 1. 接口中 user_token和timeline都不传递,都加入到sign中,服务端根据sign获取到对应的user_token和timeline,并进行校验; > 2. user_token:用户唯一访问口令,选填选项,因为有些接口不一定要求用户权限校验 > 3. timestamp:访问时间戳,防止接口不断重发模拟或者ddos,服务端设置该接口的有效使用期为1分钟,过期作废 ### 4. timestamp 服务端与客户端同步问题 > 1. 方法1 > 在客户端启动时请求的init接口,获取到服务端时间,进行时间差异计算,这个时候客户端请求之后的api时,通过差异时间获取最新时间 > 2. 方法2 > 客户端如果时间有误时,可以返回错误的同时再返回一个服务器的当前时间,客户端接收到该错误后再请求上一个接口(客户端需控制不断错误请求的次数) > 最好的方式是两者结合