商家授权统一改造方案 - 图文
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。
Refresh Token刷新延时URL http://container.open.taobao.com/container/refresh?...... Refresh Token刷新延时入参 参数名称 appkey sessionkey refresh_token sign 说明 应用的appkey Session key Refresh token(如果不知道refresh token,可以传入session key) 签名 Refresh Token刷新延时出参 以json格式返回 参数名称 top_session refresh_token re_expires_in sign 说明 session过期时间(long型) Refresh token(即sessionkey) 用于刷新session失效时间(long型) 签名 注意事项:每天每个sessionKey做多刷新60次。 Refresh Token签名算法示例 根据参数名称将你的所有请求参数按照字母先后顺序排序:key + value .... key + value,对除签名外的所有请求参数按key做的升序排列, value无需编码。 例如:将foo=1,bar=2,baz=3 排序为bar=2,baz=3,foo=1 参数名和参数值链接后,得到拼装字符串bar2baz3foo1将secret同时拼接到参数字符串尾部进行md5加密,然后对签名进行BASE64加密。 代码示例如下: public static String sign(String parameter, String secret, String encode) { // 对参数+密钥做MD5运算 MessageDigest md = null; try { md = MessageDigest.getInstance(\ } catch (NoSuchAlgorithmException e) { } if(encode == null){//没指定编码 byte[] digest = md.digest((parameter + secret).getBytes()); return new String(Base64.encodeBase64(digest)); }else{//指定了编码 try{ byte[] digest = md.digest((parameter + secret).getBytes(encode)); return new String(Base64.encodeBase64(digest),encode); } catch(UnsupportedEncodingException e) { } } return null; } @SuppressWarnings(\static public void main(String[] args){ String appkey = \ String secret = \ String sessionKey = \ String refreshToken = \ Map signParams = new TreeMap(); signParams.put(\ signParams.put(\ signParams.put(\ StringBuilder paramsString = new StringBuilder(); Set> paramsEntry = signParams.entrySet(); for (Entry paramEntry : paramsEntry) { paramsString.append(paramEntry.getKey()).append(paramEntry.getValue()); } try { String sign = SignRefreshTest.sign(paramsString.toString(), secret, null); String signEncoder = URLEncoder.encode(sign, \ String appkeyEncoder = URLEncoder.encode(appkey, \ String sessionkeyEncoder = URLEncoder.encode(sessionKey, \ String refreshTokenEncoder = URLEncoder.encode(refreshToken, \ String refreshUrl = \http://container.open.taobao.com/container/refresh?appkey=\ + appkeyEncoder + \+ sessionkeyEncoder + \ System.out.println(refreshUrl); } catch (Exception e) { } } 回调地址签名验证 1. 回调地址的格式和参数说明 应用上下文协议是TOP通过应用的回调地址传递的url格式如下 http://callback.com/callback?top_appkey=xxx&top_parameters=xxxxx&top_session=xxxxx&top_sign=xxxxx 回调地址传递的具体参数 参数名称 top_appkey 参数描述 说明 TOP分配给应用的Key top_session 用户session key 签名规则为base64(md5(top_appkey+ top_parameters+top_session+app_secret)) top_parameters 上下文参数 top_sign 签名 top_parameters是插件容器传递给插件的参数集合,具体的参数内容有: 参数名称 ts 参数描述 当前时间戳 说明 时间戳,插件需要对该时间戳进行验证 iframe 应用输出是否在IFRAME中 取值说明: 0-和TOP页面集成在一起;1-输出到IFRAME中 visitor_id visitor_nick visitor_role expires_in 当前用户ID 当前用户昵称 当前用户角色 sessionKey失效时长 即uid,用户不登录则不传 用户不登录则不传 5-未登录用户 单位秒,为颁发授权到授权失效的时间差值 refresh_token 一个用户对应一个应用唯一刷新标识 re_expires_in refresh token 失效时长 用来延长sessionkey的失效时间,其本身也具有失效概念 单位秒,为失效时间到授权开始时间的差值 说明: 1.top_parameters具体的产生方式是:base64(key1=value1&key2=value2……;
商家授权统一改造方案 - 图文.doc
将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印