注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。
官网地址如下:
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微信授权小程序获取用户手机号信息相关推荐

  1. 微信小程序获取用户手机号授权方法

    微信小程序获取用户手机号方法 首先在 app.json 页面添加一个新的用户授权页面,放在首页index的后面即可 在 app.js 页面中编写如下代码: 这里包含了获取用户信息的相关代码 //app ...

  2. 微信小程序python解析获取用户手机号_微信小程序获取用户手机号

    获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...

  3. 微信小程序获取用户手机号--官方示例

    微信小程序获取用户手机号–官方示例 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNu ...

  4. springboot 微信小程序获取用户手机号 最新方式

    springboot 微信小程序获取用户手机号 直接开整!!! 现在有两种方式获取微信用户的手机号 第一种 这种方式比较旧了,也能获取到手机号,但不建议使用. 1.前端调用wx.login()(官方的 ...

  5. 小程序获取用户手机号权限,微信认证

    问题:小程序获取用户手机号,提示权限不足 原因:小程序没有进行微信认证 解决方案:在小程序的管理后台,点击右上角小程序logo,然后找到微信认证 微信认证方法1:自己开通 点击对应详情,根据流程一步一 ...

  6. 小程序获取用户地址信息api

    小程序获取用户地址信息api 前台部分 <view class="address-wraper"><view bindtap="chooseAddres ...

  7. 微信小程序获取用户手机号存数据库,前后端都有《Java后台版 》

    开发这个功能的时候走了很多弯路磨了很多时间,我发一下我自己用的来帮助大家 流程图 前端 index.wxml <view>我的首页内容</view><button cla ...

  8. 微信小程序python解析获取用户手机号_微信小程序获取用户手机号详解

    最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...

  9. 小程序获取用户手机号_借助云开发5行代码获取小程序用户的手机号

    最近有很多同学有获取小程序用户手机号的需求.其实云开发出现之前我们获取小程序用户的手机号特别繁琐.自从有了云开发,我们获取用户手机号变得非常简单.只需要5行代码即可. 老规矩,我们先来看下效果图 再来 ...

最新文章

  1. linux安装python2和3版本_Windows下安装Python2和Python3双版本
  2. 张鸿轩:大数据让无形之风尽在掌握 | 优秀毕业生专访
  3. 【云计算】6_云数据库产品介绍
  4. 当12C PDB遇上JDBC
  5. Linux学习之系统编程篇:条件变量(pthread_cond_init / wait / signal / broadcast / destroy)
  6. 当硬核动作游戏《怪物猎人》变成了回合制RPG,还会那么好玩吗?
  7. SpringCloud(笔记)
  8. 顺序循环队列的基本操作
  9. 泰康应用盒子Android,泰康医疗app下载-泰康医疗 安卓版v1.8.8-PC6安卓网
  10. MOSS 2010:Visual Studio 2010开发体验(32)——工作流开发最佳实践(四):可重用工作流...
  11. Apollo(阿波罗)是携程框架部门研发的分布式配置中心,ubuntu本机安装
  12. 课堂练习——返回一个整数数组中最大子数组的和
  13. 令人震惊!JSP已经淘汰,却才搞明白JSP和Servlet之间不可告人的关系!
  14. 通用能力-判断推理题
  15. google earth android 坐标,google earth 坐标大全(谷歌地球坐标大全).doc
  16. 写的一个58获取房东手机号,爬虫,奈何号码都是加密,练手用
  17. google翻译出错什么原因?翻译英文页面时中文闪了下就显示“翻译出错请重试”
  18. 解决WMI Provide Host占用CPU过高问题(win10亲测有用)
  19. 单页双曲面 matlab,matlab绘制单叶双曲面
  20. ROS-3DSLAM(5):雷达部分交流分析A

热门文章

  1. Prism-对话服务
  2. DAS、SAN、NAS三种存储
  3. python实训收获_Python量化投资实训营
  4. 照片如何加滤镜?一步一步教会你给图片加上滤镜
  5. Java设置系统日期和时间
  6. 生活…感情…工作…各种…都是浮云
  7. 专访赛门铁克:医院管理的零病毒+免维护
  8. Jmeter性能测试五--分布式集群压测
  9. Java如何根据经纬度计算两点距离?
  10. 18.10.01模拟赛总结