接口标准
用户相关数据构成
graph LR
user((用户))==1..1==>login{登录信息}
user==1..1==> passport{用户许可证}
login==1..n==>username(登录名)
login==1..1==>password(登录密码)
passport==1..1==>openapi(接入用户编号openid)
openapi==1..n==>app{接入应用信息}
app==1..1==>appid(接入应用编号appid)
app==1..1==>appkey(应用密钥appkey)
app==1..3==>token(临时许可token)
接入许可信息
信息项
字段名 | 类型 | 描述 |
---|---|---|
openid | String | 接入用户编号,获取方式:接入申请通过后,由平台给予发放,用于标注唯一用户 |
appid | String | 接入应用编号,获取方式:单个用户可拥有多个appId,用于标注唯一应用,由平台发放 |
appkey | String | 应用密钥,获取方式:与appId对应的,用于数字签名使用,由平台同appId一同发放 |
token | String | 临时许可:获取方式:用户应用登录开发平台后,由平台进行发放,有效时间20min |
tokenurl | String | 用户获取临时许可url:获取方式:由接入用户提供,此url为接入用户提供服务,平台收到临时许可获取请求后,将通过回调此url方式,将token信息返回接入用户,接入用户收到token后,自行进行保存 |
请求调用方式
api模式
调用方式
- 请求URL说明:http://[域名]/[api_name],api_name组成:[服务分组信息]/[服务名]/[动作名]
- OpenAPI超时时间:OpenAPI接口机设置的最长超时时间为3s
- 请求调用方式: 远期支持HTTP GET、POST、PUT、DELETE操作,请求数据以K/V形式传递,考虑安全性要求,暂只支持GET和POST方法
- 应答数据方式: 返回数据格式可由用户自行选择,支持json或者xml,默认为json
请求参数
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
openid | 必须 | String | 由平台发放给用户的接入用户编号 |
appid | 必须 | String | 由平台发放给用户的应用编号,与openid有强关联性 |
token | 必须 | String | 平台发放的临时许可,具体见安全设计 |
sig | 必须 | String | 请求串的签名,以appkey作为密钥,具体见安全设计 |
output | String | 返回格式类型,支持json和xml(必须小写),默认为json | |
userip | String | 用户访问的ip地址 |
应答参数
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
resultcode | 必须 | String | 应答码 |
resultdesc | 必须 | String | 应答消息 |
传输协议
- 数据签名—Step1.构建原串
源串是由3部分内容用“&”拼接起来的: HTTP请求方式 & urlencode(uri) & urlencode(a=x&b=y&...) 源串构造步骤如下: 第1步:将请求的URI路径进行URL编码(URI不含host,URI示例:/group/acct/get_info)。 第2步:将除“sig”外的所有参数按key进行字典升序排列。 注:除非OpenAPI文档中特别标注了某参数不参与签名,否则除sig外的所有参数都要参与签名。 第3步:将第2步中排序后的参数(key=value)用&拼接起来,并进行URL编码。 第4步:将HTTP请求方式(GET或者POST)以及第1步和第3步中的字符串用&拼接起来。
- 数据签名—Step2.构造密钥
得到密钥的方式:在应用的appkey末尾加上一个字节的“&”,即appkey&,
例如:228bf094169a40a3bd188ba37ebe8723&
- 数据签名—Step3.生成签名值
1. 使用HMAC-SHA1加密算法,使用Step2中得到的密钥对Step1中得到的源串加密。
2. 然后将加密后的字符串经过Base64编码。
3. 得到的签名值结果如下:FdJkiDYwMj5Aj1UG2RUPc83iokk=
临时许可证
第一步:接入用户应用请求平台获取临时许可服务,平台临时许可服务URL= http://[域名]/token,
请求字段只包含公共请求信息,不包含token,应答字段只包含公共应答信息。
第二步:平台访问接入用户所提供tokenurl,将token返回用户,格式为K/V形式,
例如:http://tokenurl?token=fwf2einf2on2foenf
注意:token有效周期为20min,平台支持每个接入用户应用同时拥有3个有效token,
便于token失效前进行重新获取。