获取微信小程序的昵称和手机号
1.获取openId和sessionKey
public static Map<String, Object> getOpenIdAndSessionKey(String code) {//微信的接口String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + WxConfig.APPID + "&secret=" + WxConfig.SECRET + "&js_code=" + code + "&grant_type=authorization_code";RestTemplate restTemplate = new RestTemplate();//进行网络请求,访问url接口Map<String, Object> map = new HashMap<>();ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class);//根据返回值进行后续操作if (responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) {String sessionData = responseEntity.getBody();JSONObject jsonObj = JSONObject.parseObject(sessionData);try {map.put("openId", jsonObj.get("openid").toString());if (jsonObj.containsKey("session_key")) {map.put("sessionKey", jsonObj.get("session_key").toString());}} catch (Exception e) {throw new CloudException("无法获取该微信号的openID!");}}return map; }
2.通过encryptData, ivData;,sessionKey解密手机号号码
@Override public String decodePhone(DecodePhone decodePhone) {log.info("{}-------------", decodePhone);String phone = "";// 被加密的数据byte[] dataByte = org.bouncycastle.util.encoders.Base64.decode(decodePhone.getEncryptData());// 加密秘钥byte[] keyByte = org.bouncycastle.util.encoders.Base64.decode(decodePhone.getSessionKey());// 偏移量byte[] ivByte = Base64.decode(decodePhone.getIvData());try {// 如果密钥不足16位,那么就补足. 这个if 中的内容很重要int base = 16;if (keyByte.length % base != 0) {int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);byte[] temp = new byte[groups * base];org.bouncycastle.util.Arrays.fill(temp, (byte) 0);System.arraycopy(keyByte, 0, temp, 0, keyByte.length);keyByte = temp;}// 初始化Security.addProvider(new BouncyCastleProvider());Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");parameters.init(new IvParameterSpec(ivByte));// 初始化cipher.init(Cipher.DECRYPT_MODE, spec, parameters);byte[] resultByte = cipher.doFinal(dataByte);if (null != resultByte && resultByte.length > 0) {String result = new String(resultByte, "UTF-8");JSONObject jsonObject = JSONObject.parseObject(result);phone = jsonObject.getString("phoneNumber");log.info("手机号--------------" + phone);}} catch (NoSuchAlgorithmException e) {LOGGER.error(e.getMessage(), e);} catch (NoSuchPaddingException e) {LOGGER.error(e.getMessage(), e);} catch (InvalidParameterSpecException e) {LOGGER.error(e.getMessage(), e);} catch (IllegalBlockSizeException e) {LOGGER.error(e.getMessage(), e);} catch (BadPaddingException e) {LOGGER.error(e.getMessage(), e);} catch (UnsupportedEncodingException e) {LOGGER.error(e.getMessage(), e);} catch (InvalidKeyException e) {LOGGER.error(e.getMessage(), e);} catch (InvalidAlgorithmParameterException e) {LOGGER.error(e.getMessage(), e);} catch (NoSuchProviderException e) {LOGGER.error(e.getMessage(), e);}return phone;
获取微信小程序的昵称和手机号相关推荐
- PHP 获取微信小程序用户手机号
截止到目前为止,小程序通过获取session_key与encryptedData与iv进行解密获取手机号的方法已经不行了,只能通过点击按钮来实现获取微信用户的手机号,本文仅以PHP为例 大概流程: 1 ...
- springboot 实现微信小程序授权并解密手机号
1.授权 授权是有前端完成的,授权后,前端可以获取到code,后台根据code获取微信小程序用户对应的openid和session_key,并根据openid判断是否是新用户,代码如下: @Value ...
- 获取小程序用户信息+java_java获取微信小程序用户信息
第一步:获取openid.session_key等信息. /** * 获取微信小程序的用户openid和session_key/unionid * 返回格式:{"session_key&qu ...
- UNIAPP---实现微信小程序登录授权和手机号授权(uniapp做微信小程序)
UNIAPP-实现微信小程序登录授权和手机号授权(uniapp做微信小程序) 描述:uniapp开发小程序,先授权用户信息后再出现手机号授权的页面进行手机号授权.完成后返回上一页面并把信息存入后台以及 ...
- PHP(TP5)获取微信小程序unionId
最近做一个项目,微信小程序.Android.IOS同步进行开发,小程序从微信内部直接登录,Android.IOS也需要用微信登陆,为了确定同一用户的身份,需要使用到微信的unionId. 将小程序.A ...
- 只需两步快速获取微信小程序源码
第一次在掘金这样高大上的社区写文章,忐忑地敲下我获取小程序源码过程中的经验分享. 最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了某个小程序的前端实现,过程一言难尽,差不多两 ...
- 获取微信小程序右上角胶囊的位置
获取微信小程序右上角胶囊的位置 微信中有一个api是用来获取胶囊的位置以及其他信息的,这个可以在我们使用自定义的标题的时候避开这个位置,或者自己写点什么东西 ,要和胶囊对齐的 api wx.getMe ...
- 利用 node.js 云函数解密获取微信小程序的手机号码等加密信息 encryptedData 的内容。
首先你必须会用微信小程序的云函数功能: 1.创建一个名为token的云函数 2.在云开发的云函数管理中添加对应的token云函数 3.在开发工具中编辑云函数token 4.点击右键,安装并部署 大致是 ...
- 如何获取微信小程序包
下载一个夜神模拟器 并在模拟器中下载微信 打开并登陆微信,访问小程序等小程序加载 完成则可以获取微信小程序的pak包 打开Amaze 文件管理 点击文件根目录 依次访问 data/data/com.t ...
最新文章
- 3分钟看完一篇论文,这个AI文本生成模型把今年NeurIPS 2300+篇总结了个遍
- 没有与制定类型匹配的重载函数 cv::Vec<_Tp 实例
- linux检测网卡步骤,linux网卡检测命令
- Leetcode 56.合并区间 (每日一题 20210708)
- 2022 年第一场云原生技术实践营开启报名
- ejb生命周期_EJB 3.x:生命周期和并发模型(第1部分)
- java实现矩阵相乘
- Android SDK 2.2 开发环境安装
- 阿里云超算异构Spot集群,助力深势科技30%成本驱动MDaaS海量算力
- 一些会遗忘的代码属性
- 给语音信号加混响的常用方法(方法三)
- 文档管理,PDF控件PDF-XChange PRO SDK
- android 设置路由器,192.168.1.1路由器设置手机登陆
- #vue#element-ui文件上传(格式校验)
- 20条职业发展建议,送给拒绝原地踏步的你
- kettle配置资源库
- 在机器学习领域,主要的学习方式是哪几种?
- 4月4日网站变灰实录
- 黑白照片修复彩色软件免费有哪些?分享这三个实用的软件给你
- 疯狂值班表(人员跟日期生成的视图)
热门文章
- 别名(Alias)-Yii 约定-深入理解YII2.0(2.2)
- 摄影测量-后方交会与前方交会,相对定向与绝对定向,光束法
- Java判断用户是通过pc,还是安卓还是ios,还是微信客户端访问
- i国网app苹果版_阿里云盘app苹果版 -阿里云盘app官方手机版下载
- 《给研究生的学术建议》13——研究设计
- jQuery基础----10jQuery效果-回调
- Pangu分词Lucene.Net搜索使用说明
- 区块链平台Coursera(第四周)替代去中心化解决方案
- Rust 基础(三)
- 零基础入门NPL之新闻分类