欢迎您光临深圳塔灯网络科技有限公司!
电话图标 余先生:13699882642

网站百科

为您解码网站建设的点点滴滴

小程序篇获得unionID

发表日期:2019-08 文章编辑:小灯 浏览次数:879

需要把小程序放在 同一个微信开发者 下

1 先按照loginInfo信息查询有无有unionID
2 如果有,直接返回 ,程序结束
3 如果没有,将用于解密的session_key获取
4 根据userInfo拿取encryptedData等加密数据
5 对加密数据进行逆解密
6 拿到unionID 返回,程序结
userInfo 注意一下:通过user.getInfo获取的和通过button授权获取的格式不一样

 /** * 根据logininfo 的code尝试获取unionID * @param request * @return */public staticMap<String, String> getUnionIDByLoginInfo(String resCode, HttpServletRequest request) {JSONObject loginRes = null;Map<String, String> loginResMap = new HashMap<>();try {// 网址看参数说明:https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobjectString url = SysConstants.WEICHAT_UNIONID_URL+"?appid="+SysConstants.WECHAT_APPID+ "&secret="+ SysConstants.WECHAT_SECRET + "&js_code=" + resCode + "&grant_type="+SysConstants.WECHAT_FRANT_TYPE;loginRes = HttpClientUtils.doGet(url);} catch (Exception e) {throw new RuntimeException(e);}String openid = (String) loginRes.get("openid");String session_key = (String) loginRes.get("session_key"); 【如果没有需要解密 】String unionid = (String) loginRes.get("unionid"); 【判断有没有】loginResMap.put("openid", openid);loginResMap.put("unionid", unionid);loginResMap.put("session_key", session_key);return loginResMap;}

session_key 解密encryptedData iv

/** * @param session_key * @return */public staticJSONObject decipherByUserInfo(String session_key,String encryptedData,String iv ) {LOG.info(">>>start 解密需要的数据为:encryptedData:{},iv:{},session_key:{}", encryptedData, iv, session_key);// 被加密的数据byte[] dataByte = Base64.decodeBase64( encryptedData.replaceAll(" ", "+") );// 加密秘钥byte[] aeskey = Base64.decodeBase64(session_key);// 偏移量byte[] ivByte = Base64.decodeBase64( iv.replaceAll(" ", "+") );String newuserInfo = "";try {AES aes = new AES();byte[] resultByte = aes.decrypt(dataByte, aeskey, ivByte);if (null != resultByte && resultByte.length > 0) {newuserInfo = new String(resultByte, "UTF-8");LOG.info(">>>end 解密完毕,解密结果为newuserInfo:{}", newuserInfo);return JSONObject.parseObject(newuserInfo);}} catch (Exception e) {LOG.info("解密异常!检查解密数据 {}", newuserInfo, e);e.printStackTrace();}return null;}

转载地址: https://blog.csdn.net/weixin_39214304/article/details/79158750


本页内容由塔灯网络科技有限公司通过网络收集编辑所得,所有资料仅供用户学习参考,本站不拥有所有权,如您认为本网页中由涉嫌抄袭的内容,请及时与我们联系,并提供相关证据,工作人员会在5工作日内联系您,一经查实,本站立刻删除侵权内容。本文链接:http://dengtar.com/20836.html
相关小程序
 八年  行业经验

多一份参考,总有益处

联系深圳网站公司塔灯网络,免费获得网站建设方案及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:余经理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.