原网址:http://open.12580.com/goMenuUrl.chtml?a=5644
文档说明
本文档主要介绍H5页面如何解析客户端传来的用户登录信息。以及如何根据解析后的用户登录信息来要求用户登录或者绑定手机号码的操作。
客户端传递用户信息方式
客户端目前会在打开第三方页面的时候,在url地址里面拼接上toekn字符串:
token的值由tokenString+“,”+”imei”+”imsi”组成字符串,用des加密构成。密钥是guaguaka
如:原字符串“1451889165036.10167.11337,000000000000000,310260000000000”====》
加密后:
64DF4EC034CF1FA
用户信息解析
接入方,从url地址拿到数据后,解密后得到token对应的值
1.如果token值为空或者为0。则用户肯定没有登陆。此时调用客户端的登陆(发送伪协议27)
2.token不为空也不为0去调用接口解析token
解析接口地址:
http://hi.12580.com:8080/client_new/v1/user/getUserByToken
此处需要在Http的请求头里面加入3个参数
请求头参数列表
参数 | 类型 | 是否必须 | 示例值 | 备注 |
clientName | String | 是 | THIRD_PARTY | 用于区分渠道。 |
version | String | 是 | yoger | 固定值,用于区分接入方。由宽连侧分配。必传 |
kw | String | 是 | 20150924095353#d5b2fbcb3e4d45c4c99ffc3df3d4f65f | 用于加密。必传 |
注:kw的获取
public staticString getVerifyString() {
String ctime =CTime.getTime(14);
return ctime
+"#"
+getMD5(Constants.STORE_FLAG + ctime.substring(0, 8)
+Constants.STORE_VERSION + ctime.substring(8, 14));
}
cTime就是当前的时间,yyyymmddhhmmss如20160104164823
STORE_FLAG ="12580777";
STORE_VERSION ="1.0";
md5加密。拼接成字符串。
body传参列表
参数 | 类型 | 是否必须 | 示例值 | 备注 |
token | String | 是 | 1442988958938.18703.10769 | 客户端传递过 |
请求报文示例:
{"token":"1442988958938.18703.10769"}
需要对body进行加密传输
1.加密方法:
jsonStr = {"token":"1442988958938.18703.10769"}
Hex.encodeHexString(Base64.encode(jsonStr))
即先用base64,再用hex,解码相反。
服务器返回的数据也是加密数据,需要解密解码之后才可看到
String result = new String(Base64.decode(Hex.decodeHex(baos.toString().toCharArray())))
返回的报文示例
①已登录且有手机号:
{"ALLOW_COIN":true,"AREA_CODE":"320500","BOSS_SET":"钻石用户","EMAIL":"469490335@qq.com","FUSION_FLAG":"0","GRADE_NAME":"LV2","GRICE":"195","IS_MALL_VIP":false,"MALL_U_ID":"151495211",
"OPERATOR_CODE":"JSYD","REG_TIME":"20140129092126","SCORE":"195","SID":"949BDF7731BDC5A0224553A61A50128B","TERMINAL_ID"
:"13776063474","USER_ID":"051231512141","USER_LEVEL":"360001","USER_NAME":"ssssssssssss","USER_PHOTO"
:"http://mall.12580life.com/userphoto/151495211/zBzb/20150601111043_zBzb.jpg","U_ID":"10099441","flag":"00-00","isLogin":
true,"msg":"操作成功"}
判断方式mallUId和TERMINAL_ID都不为空
②已登录且是互联网账号没有绑定手机号:
{"ALLOW_COIN":true,"AREA_CODE":"320100","EMAIL":"ymm5@163.com","FUSION_FLAG":"0","IS_MALL_VIP":false,"MALL_U_ID":"174873271"
,"REG_TIME":"20150629104551","SID":"8CA1B34D96172E873256CACF5ACB90F1","U_ID":"19264333","flag":"00-00","isLogin":true,
"msg":"操作成功"}
判断方式mallUId不为空但TERMINAL_ID为空
③token失效:
{"ALLOW_COIN":true,"IS_MALL_VIP":false,"flag":"10-07","isLogin":false,"msg":"token无效"}
H5页面的处理
H5页面需要提供javascript:ios_page_load(tokenString)
这个js方法。客户端在登陆成功之后,会把toke加密:
DesUtils desUtils = new DesUtils( "guaguaka" );String tokenString = desUtils.encrypt(TOKEN + "," + IMEI + "," + IMSI);
通过ios_page_load这个js方法把用户的信息传递给H5页面。