Java微信授权小程序获取用户手机号信息
注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。
官网地址如下:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
1.小程序授权拿到code
wx.login({success (res) {if (res.code) {//发起网络请求wx.request({url: 'https://test.com/onLogin',data: {code: res.code}})} else {console.log('登录失败!' + res.errMsg)}}
})
2.小程序授权获取手机号标签拿到encryptedData与iv
# 授权按钮,绑定用户点击后的方法 getPhoneNumber()
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>js方法:
getPhoneNumber: function (e) {// 参数e是绑定的授权方法自动传入过来的, 主要是为了拿到vi和encryptedData值从后台换取用户联系方式if ("getPhoneNumber:ok" != e.detail.errMsg){wx.showToast({icon:'none',title: '快捷登陆失败'})return;}var iv = e.detail.iv;var encryptedData = e.detail.encryptedData; var code = this.data.wxCode;//小程序授权拿到的code var _this = this; api.sendPost({url: ‘’, //调用后台接口获取用户手机号码params:{encrypted: encryptedData,iv:iv,code:code},success:function(data){// 获取到的手机号码var phone = data.phone;},fail:function(msg){})
}
3.后台接口
/** 获取小程序用户基本信息*/@RequestMapping(value="code2Session", method = RequestMethod.GET)public ReturnData code2Session(HttpServletRequest req,String code,String encryptedData,String iv) throws Exception {String code = req.getParameter("code");//第一步:通过code换取网页授权access_token String url = "https://api.weixin.qq.com/sns/jscode2session?appid=‘你的小程序appid’&secret=‘你的小程序密钥’&js_code="+code+"&grant_type=authorization_code";JSONObject jsonObject = WXAuthUtil.doGetJson(url);Map<String,String> map=new HashMap<>();map.put("openid",jsonObject.getString("openid"));map.put("unionid",jsonObject.getString("unionid"));map.put("session_key",jsonObject.getString("session_key")); String sessionkey = jsonObject.getString("session_key");// 解密byte[] encrypData = Base64Utils.decodeFromString(encryptedData);byte[] ivData = Base64Utils.decodeFromString(iv);byte[] sessionKey = Base64Utils.decodeFromString(sessionkey);AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivData);Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec keySpec = new SecretKeySpec(sessionKey, "AES");cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);// 设置为解密模式String resultString = new String(cipher.doFinal(encrypData), "UTF-8");JSONObject object = JSONObject.parseObject(resultString);map.put("phone",object.getString("phoneNumber"));// 拿到手机号码return ReturnData.success(map);}
Java微信授权小程序获取用户手机号信息相关推荐
- 微信小程序获取用户手机号授权方法
微信小程序获取用户手机号方法 首先在 app.json 页面添加一个新的用户授权页面,放在首页index的后面即可 在 app.js 页面中编写如下代码: 这里包含了获取用户信息的相关代码 //app ...
- 微信小程序python解析获取用户手机号_微信小程序获取用户手机号
获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...
- 微信小程序获取用户手机号--官方示例
微信小程序获取用户手机号–官方示例 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNu ...
- springboot 微信小程序获取用户手机号 最新方式
springboot 微信小程序获取用户手机号 直接开整!!! 现在有两种方式获取微信用户的手机号 第一种 这种方式比较旧了,也能获取到手机号,但不建议使用. 1.前端调用wx.login()(官方的 ...
- 小程序获取用户手机号权限,微信认证
问题:小程序获取用户手机号,提示权限不足 原因:小程序没有进行微信认证 解决方案:在小程序的管理后台,点击右上角小程序logo,然后找到微信认证 微信认证方法1:自己开通 点击对应详情,根据流程一步一 ...
- 小程序获取用户地址信息api
小程序获取用户地址信息api 前台部分 <view class="address-wraper"><view bindtap="chooseAddres ...
- 微信小程序获取用户手机号存数据库,前后端都有《Java后台版 》
开发这个功能的时候走了很多弯路磨了很多时间,我发一下我自己用的来帮助大家 流程图 前端 index.wxml <view>我的首页内容</view><button cla ...
- 微信小程序python解析获取用户手机号_微信小程序获取用户手机号详解
最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...
- 小程序获取用户手机号_借助云开发5行代码获取小程序用户的手机号
最近有很多同学有获取小程序用户手机号的需求.其实云开发出现之前我们获取小程序用户的手机号特别繁琐.自从有了云开发,我们获取用户手机号变得非常简单.只需要5行代码即可. 老规矩,我们先来看下效果图 再来 ...
最新文章
- linux安装python2和3版本_Windows下安装Python2和Python3双版本
- 张鸿轩:大数据让无形之风尽在掌握 | 优秀毕业生专访
- 【云计算】6_云数据库产品介绍
- 当12C PDB遇上JDBC
- Linux学习之系统编程篇:条件变量(pthread_cond_init / wait / signal / broadcast / destroy)
- 当硬核动作游戏《怪物猎人》变成了回合制RPG,还会那么好玩吗?
- SpringCloud(笔记)
- 顺序循环队列的基本操作
- 泰康应用盒子Android,泰康医疗app下载-泰康医疗 安卓版v1.8.8-PC6安卓网
- MOSS 2010:Visual Studio 2010开发体验(32)——工作流开发最佳实践(四):可重用工作流...
- Apollo(阿波罗)是携程框架部门研发的分布式配置中心,ubuntu本机安装
- 课堂练习——返回一个整数数组中最大子数组的和
- 令人震惊!JSP已经淘汰,却才搞明白JSP和Servlet之间不可告人的关系!
- 通用能力-判断推理题
- google earth android 坐标,google earth 坐标大全(谷歌地球坐标大全).doc
- 写的一个58获取房东手机号,爬虫,奈何号码都是加密,练手用
- google翻译出错什么原因?翻译英文页面时中文闪了下就显示“翻译出错请重试”
- 解决WMI Provide Host占用CPU过高问题(win10亲测有用)
- 单页双曲面 matlab,matlab绘制单叶双曲面
- ROS-3DSLAM(5):雷达部分交流分析A