springboot 微信小程序获取用户手机号 最新方式
springboot 微信小程序获取用户手机号
直接开整!!!
现在有两种方式获取微信用户的手机号
第一种
这种方式比较旧了,也能获取到手机号,但不建议使用。
1.前端调用wx.login()(官方的方法,直接在代码中调用就可以)方法,把得到的code传给后端,后端在通过这个code和appid,secret获取sessionkey和openid。ps:这里需要把获取到的sessionkey和openid存入redis,sessionkey之后会用到,他是解密出手机号的钥匙。
2.前端在调用 getPhoneNumber ()方法(这个也是官方的方法),会得到如下数据
这时在把encryptedData和iv传给后端,后端在处理这两个参数和上一步得到的sessionkey,解密出用户的手机号。
第二种
这是目前最新的获取方式。
前端调用getPhoneNumber () ,这时只需要把得到数据中的code传给后端,后端通过appid和secret访问https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}获取刷新token,然后再携带这个刷新token和前端传给的code调用https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={0}就可以获取用户的手机号了,不需解密操作。这两种方式都可以获取用户的手机号,但第一种有点麻烦,还需要解密。毕竟是有新的而且是更简洁的方式,还是用新的方式比较好,旧的之后不知道会不会被官方弃用。
完整代码
两种方式我都写了,这里只提供第二种方式的完整代码供大家参考
这里需要fastjson和hutool两个依赖,放入pom文件中下载即可
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency>
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.6.5</version></dependency>
appid和secret放在yml文件中
代码:
@Value("${weixin.appid}")private String appid;@Value("${weixin.secret}")private String secret;public Object getPhoneNumber(String code) {String result = null;try {String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";String replaceUrl = url.replace("{0}", appid).replace("{1}", secret);String res = HttpUtil.get(replaceUrl);JSONObject json_token = JSON.parseObject(res);String access_token = json_token.getString("access_token");String urlTwo = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={0}";String replaceUrlTwo = urlTwo.replace("{0}",access_token);HashMap<String, Object> requestParam = new HashMap<>();// 手机号调用凭证requestParam.put("code", code);String jsonStr = JSON.toJSONString(requestParam);HttpResponse response = HttpRequest.post(replaceUrlTwo).header(Header.CONTENT_ENCODING, "UTF-8")// 发送json数据需要设置contentType.header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded").body(jsonStr).execute();if (response.getStatus() == HttpStatus.HTTP_OK) {result = response.body();}} catch (HttpException e) {e.printStackTrace();}return JSONObject.parseObject(result).get("phone_info");}
结果
个人码云有一些demo
springboot 微信小程序获取用户手机号 最新方式相关推荐
- 微信小程序python解析获取用户手机号_微信小程序获取用户手机号
获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...
- 微信小程序获取用户手机号--官方示例
微信小程序获取用户手机号–官方示例 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNu ...
- 微信小程序获取用户手机号授权方法
微信小程序获取用户手机号方法 首先在 app.json 页面添加一个新的用户授权页面,放在首页index的后面即可 在 app.js 页面中编写如下代码: 这里包含了获取用户信息的相关代码 //app ...
- 微信小程序获取用户手机号,后端php实现 (前后端完整代码附效果图)
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 如图: 小程序代码: 第一步,登录,获取用户的 session_key: 第二步,点击按钮调用 bindget ...
- 微信小程序获取用户手机号存数据库,前后端都有《Java后台版 》
开发这个功能的时候走了很多弯路磨了很多时间,我发一下我自己用的来帮助大家 流程图 前端 index.wxml <view>我的首页内容</view><button cla ...
- 微信小程序python解析获取用户手机号_微信小程序获取用户手机号详解
最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...
- 微信小程序获取用户手机号授权
1.获取微信用户绑定的手机号,需要先在主页面调用wx.login接口 2.使用button按钮触发授权弹窗 <button open-type="getPhoneNumber" ...
- 小程序获取用户手机号权限,微信认证
问题:小程序获取用户手机号,提示权限不足 原因:小程序没有进行微信认证 解决方案:在小程序的管理后台,点击右上角小程序logo,然后找到微信认证 微信认证方法1:自己开通 点击对应详情,根据流程一步一 ...
- 微信小程序获取用户信息流程(2022年版)
开门见山地说,本文主要讲述微信小程序在2022年以后获取用户信息的主要方法,如果想要了解2022年之前微信小程序获取用户信息的相关知识或者是微信小程序之前这部分的设计思想的话,推荐博主的下面这篇博客 ...
最新文章
- linux文件系统dentry_NFS 文件系统源代码剖析
- 9.path Sum III(路径和 III)
- 蜗蜗 Linux内核芬妮下,Linux内核的整体架构
- JAV实现跳台阶问题(《剑指offer》)
- python是什么编程教程-编程零基础应当如何开始学习 Python?
- 目标检测(Object Detection)资料汇总
- 云大计算机专业录取分数线,2016年云南大学艺术类专业录取分数线
- 刘邦韩信java_刘邦为啥非要杀韩信,800多年后李世民给出了答案,原来如此
- php eot eod_EOD的完整形式是什么?
- element UI框架Fr Cover主题插画下载模板V2.0
- 深度学习(1)---2017年深度学习NLP重大进展与趋势
- HDU2014 青年歌手大奖赛_评委会打分【入门】
- c# winform 让Form窗体上系统自带的红色关闭按钮失效,点击关闭变为隐藏
- mysql5.6.22.0安装_win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法
- 电脑鼠标双击桌面图标打不开怎么办
- Frameworks Detected: Web framework is detected
- 披着“云”衣裳的狗——搜狗输入法“云”版本尝鲜记
- 虚拟机无法复制文件到windows
- 产品定位:你是钉子,还是棒槌?
- Android O 收音机学习研究(基于Car)