JAVA开发(第三方接口授权访问)
接上一篇异业合作,如果一个第三方系统(我们定义为B系统)需要直接调用本系统(我们定义为A系统),那么系统间必须授权才能访问已保证系统的数据安全。
首先我们定义接口的请求示例,已http协议为例:
http://接口URL?token =xx &jsonData=xxxxx&sign=xxxx
我们可以看到需要访问A系统,我们需要携带token,调用A系统的参数而且这些参数是经过加密的,还有签名。
数据传输标准:
调用方式(url)
POST,视具体接口定义
请求类型(ContentType)
application/json
响应类型(ContentType)
application/json
首先B系统在请求A系统的数据接口之前先调用A系统的获取token接口。
/oauth2/accessToken
token需要的参数:
参数 |
参数选项 |
意义 |
grant_type |
必须 |
该值固定为access_token |
client_id |
必须 |
即对接账号(A系统和B系统约定的账号id) |
timestamp |
必须 |
当前调用时间,格式为yyyy-MM-dd HH:mm:ss 示例: “2018-01-01 01:01:01” 时差不能相差半小时以上 |
username |
必须 |
用户名(A系统和B系统约定的账号) |
password |
必须 |
用户密码(双方预定),必须是md5加密后的字符串,不要使用原文!大写 |
scope |
必须 |
申请权限。(传0,为以后扩展用) |
sign |
必须 |
签名,生成规则如下: 按照以下顺序将字符串拼接起来 client_secret+timestamp+client_id+username+password+grant_type+scope+client_secret client_secret(双方约定 需要md5加密后的转大写)、password(需要md5加密后的转大写); 将上述拼接的字符串使用MD5加密,加密后的值再转为大写 |
返回的token数据字段:
返回的token数据格式样例:
{"result": true,"msg": "success","uid": "57","access_token": "8BAC35711832492780DA535259949CA8","refresh_token": "FF69836D701C49E88EB1823AB545CEFB","time": 1564385329500,"expires_in": 86400,"refresh_token_expires": 1567063729500
}