当前位置: 首页 > news >正文

微信小程序电话号码授权

前端:
文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

uniapp调用的时候,要将bind用@替换

<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber"></button>
function getPhoneNumber(e){console.log(e.detail.code)  // 动态令牌console.log(e.detail.errMsg) // 回调信息(成功失败都会返回)console.log(e.detail.errno)  // 错误码(失败时返回)if (e.detail.code){User.getUserTelNumber(e.detail.code).then(res=>{// 授权成功setTimeout(()=>{uni.navigateBack({delta:1 //返回的页面层级,1为返回上一个页面})},1000)}).catch((err)=>{console.log(err,"errrrrrr")})}else{// 拒绝授权toast("拒绝授权","error")setTimeout(()=>{uni.navigateBack({delta:1 //返回的页面层级,1为返回上一个页面})},1000)}}

java:
文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html
掉这个获取电话号码,需要先获取access_token
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html
获取token,有效期是两小时,需要缓存,

    @GetMapping("/getTelNumber")@LoginRequired@ApiOperation(value = "getTelNumber",notes = "getTelNumber")public RespBean getTelNumber(String code){userService.getWechatTelNumber(code);return RespBean.ok("授权成功");}
    /*** 获取微信的 accessToken,, 需要缓存起来,,, 两小时过期* @return*/public String getAccessToken(){String tokenUrl = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", wechatPayConfig.getAppId(), wechatPayConfig.getAppSecret());Map map = restTemplate.getForObject(tokenUrl, Map.class);String accessToken = (String) map.get("access_token");System.out.println("accessToken = " + accessToken);return accessToken;}
    public void getWechatTelNumber(String code) {try {String accessToken= globalMap.get("access_token");if (accessToken == null){accessToken = getAccessToken();globalMap.put("access_token",accessToken);}//通过token和code来获取用户手机号String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accessToken + "&code=" + code;Map<String, String> map = new HashMap<>();map.put("code",code);Object obj = restTemplate.postForObject(url, map, Object.class);System.out.println("obj = " + obj);Map<String,Object> resultMap = (Map<String,Object>) obj;Map<String,Object> phoneInfo = (Map<String, Object>) resultMap.get("phone_info");System.out.println("phoneInfo = " + phoneInfo);String phoneNumber = (String) phoneInfo.get("phoneNumber");// 将number更新到user表User user = SecurityContextHolder.getUser();user.setTel(phoneNumber);this.updateById(user);} catch (RestClientException e) {throw new ServiceException(e.getMessage());}}

因为授权手机号,必须要通过点击按钮,,用户授权,不能够直接调api,,必须要按钮,,可以将按钮展示为一个授权页面,,跳过去授权,,成功之后跳回

引用:https://blog.csdn.net/qq_46940224/article/details/136865901

https://blog.csdn.net/weixin_41698051/article/details/97777993

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器学习第十一章-特征选择与稀疏学习
  • Vue3.0生命周期钩子(包含:Vue 2.0 和 Vue 3.0)
  • JavaEE 的相关知识点(一)
  • [000-002-01].数据库调优相关学习
  • python提取b站视频的音频(提供源码
  • 华为---端口隔离简介和示例配置
  • 牛客周赛 Round 56
  • 索引——appinventor
  • Spring Boot 实现定时任务
  • mysql实现分布式锁
  • 力学笃行(五)Qt key绑定、钩子(hook)
  • H5漂流瓶交友源码_社交漂流瓶H5源码
  • csrf漏洞(二)
  • GNS3 IOU: License section not found in iourc file /tmp/tmpj54abrhf/iourc
  • day01-作业题
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 10个确保微服务与容器安全的最佳实践
  • Asm.js的简单介绍
  • CentOS从零开始部署Nodejs项目
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES2017异步函数现已正式可用
  • es6--symbol
  • in typeof instanceof ===这些运算符有什么作用
  • java中具有继承关系的类及其对象初始化顺序
  • MySQL-事务管理(基础)
  • Objective-C 中关联引用的概念
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Wamp集成环境 添加PHP的新版本
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 漂亮刷新控件-iOS
  • 前端性能优化--懒加载和预加载
  • 如何在GitHub上创建个人博客
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • $jQuery 重写Alert样式方法
  • $refs 、$nextTic、动态组件、name的使用
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (42)STM32——LCD显示屏实验笔记
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (第一天)包装对象、作用域、创建对象
  • (二)学习JVM —— 垃圾回收机制
  • (七)Java对象在Hibernate持久化层的状态
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (一)认识微服务
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转) Android中ViewStub组件使用
  • (转)iOS字体
  • *上位机的定义
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core控制台应用程序初识
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET Core引入性能分析引导优化