uniapp获取手机号

微信文档

获取手机号

获取微信用户绑定的手机号,需先调用wx.login接口。

因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。

注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。

个人小程序不能使用这个功能,必须是企业小程序,如果没权限那就是没有完成微信的认证,必须先去认证

必须用button 设置为 open-type=“getPhoneNumber”

<button type="default" size="mini" hover-class='none' open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取手机号</button>

button样式 跟背景浑然一体 (支付宝小程序不行)

button {/* width: calc(100% - 100rpx); */position: relative;left: -168rpx;font-size: 34rpx;font-weight: 400;display: block;box-sizing: border-box;text-align: center;text-decoration: none;line-height: 1;-webkit-tap-highlight-color: transparent;overflow: hidden;color: #999999;background-color: #fff;/* #ifdef MP-ALIPAY */background-color: #f7f7f7;/* #endif */}

微信文档

注意

在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

先在onload中 uni.login

onLoad() {   //获取appid// #ifdef MP-ALIPAYconsole.log('获取appid')const appIdRes = my.getAppIdSync();console.log("支付宝端appId :", appIdRes.appId);this.appID = appIdRes.appId// #endif// #ifdef MP-WEIXINconsole.log('获取appid')const accountInfo = uni.getAccountInfoSync();console.log("微信端appid :",accountInfo.miniProgram.appId); // 小程序 appIdthis.appID = accountInfo.miniProgram.appId// #endifvar that = this//获取 loginRes.codeuni.login({provider: 'weixin',success: function(loginRes) {console.log("loginRes: ",loginRes);console.log("loginRes.code", loginRes.code);that.loginResCode = loginRes.code}});
},
//获取手机号 发送到后台解密手机号
getPhoneNumber(e) {console.log("errMsg", e.detail.errMsg)var that = thisif (e.detail.errMsg == 'getPhoneNumber:fail user deny') {console.log('用户拒绝提供手机号');} else {console.log('用户同意提供手机号');console.log("iv", e.detail.iv)console.log("encryptedData", e.detail.encryptedData)var encryptedData = e.detail.encryptedDatavar iv = e.detail.iv//检查登录uni.checkSession({success: (res) => {console.log("checkSession--success---res", res)if (res.errMsg == 'checkSession:ok') {console.log(res);console.log('登录暂未过期');if (encryptedData !== undefined && iv !== undefined) {that.getPhone(that.loginResCode, encryptedData, iv)}}},fail: (res) => {console.log("checkSession---fail---res", res)console.log('登录已过期');//再执行一次loginuni.login({provider: 'weixin',success: function(loginRes) {console.log("loginRes.code", loginRes.code);that.loginResCode = loginRes.codeif (encryptedData !== undefined && iv !== undefined) {that.getPhone(that.loginResCode, encryptedData, iv)}}});}})}//e.detail.errMsg == 'getPhoneNumber:fail Error: 用户未绑定手机,请先在微信客户端进行绑定后重试'  微信会自动引导用户去绑定手机
},//手机号发送至后台解密
getPhone(loginResCode, encryptData, ivStr) {uni.request({url: this.$URL + '/school/app/getMobilePhone',method: 'GET',data: {appId: this.appID,code: loginResCode,encryptData: encryptData,ivStr: ivStr,},header: {'Content-Type': 'application/json;charset=utf-8'},success: (res) => {console.log("获取解密后的手机号 -res:", res)if (res.data.code == 200) {console.log("手机号: ", res.data.obj);this.phone = res.data.obj} else {console.log('获取解密后的手机号失败', res.data.obj)uni.showToast({title: '获取手机失败,请重试',icon: 'none',duration: 1500,})}}})
},

uniapp获取手机号相关推荐

  1. uniapp获取手机号(详细教程附代码)

    uniapp获取手机号(详细教程附代码) 一.获取code 二.通过code获取获取openId 和 session_key 三.让用户授权(同意后需要对数据解密) 个人小程序不能使用这个功能,必须是 ...

  2. uniapp获取手机号流程

    1`. view视图代码 <button class="allow-btn" open-type="getPhoneNumber" @getphonenu ...

  3. uni-app微信获取手机号,第一次解密总是失败

    项目场景: uni-app; 获取code,后台解密手机号 问题描述: 每次第一次登陆,后台都会解密失败 原因分析: code获取错误:导致后台的解密key与code不对应 解决方案: 小程序获取手机 ...

  4. uni-app微信小程序获取手机号;微信小程序获取手机号,获取到后需要进行解密;微信小程序获取手机号失败 Error:该appId没有权限

    方法1.uni-app登录加获取手机号解密-直接看此篇即可解决 微信小程序获取手机号注意点: 1.需要先登录,微信小程序登录看这篇 2.手机号获取到时加密的,需要后端解密或者前端自己解密(解密时候就会 ...

  5. uniapp获取微信授权登录和手机号一键登录(保姆教程)

    uniapp获取微信授权登录(保姆教程) 第一步 下载官方给的解密文件'mWXBizDataCrypt' 没有文件就复制该文件的代码创建一个 var crypto = require('crypto' ...

  6. uniapp在小程序中登录,获取用户信息,获取手机号逻辑记录

    这里写目录标题 概述 uniapp小程序的授权描述 授权的详细说明及使用 1.微信小程序通过`uni.login()`方法可以获取到微信提供的`code` 2.通过登录获取的`code`码可以以获取用 ...

  7. uni-app开发微信小程序,关于获取手机号事件绑定的坑

    闲话少说,直接上代码. 微信官方的代码是这样的: <button open-type="getPhoneNumber" bindgetphonenumber="ge ...

  8. 【uni-app】uni-app 小程序获取手机号登录

    具体业务 小程序使用手机号登录,需要绑定到当前业务系统.获取手机号时序图如下: 实现 前端 uni-app 我对 uni.request 进行了封装,可能请求方式有些不同 <template&g ...

  9. uniapp微信授权+获取手机号+解密手机号(带图详解)

    那废话不多说,开始今天的教程,我会在尾部添加全部代码,如果你懒的自己写,可以复制我的代码,但是里面的一些数据你需要更换,我会标注出来 1.获取微信信息(我的写法是自动获取,而不需要点击触发事件获取). ...

最新文章

  1. VS2005编译QT4.8.2
  2. 张恩民 php,php100视频教程第11讲(制作PHP+MYSQL留言板 上)中,张恩民老师提到的php100-11.txt文档...
  3. 计算机设备布局图,针对不同设备类型创建仪表板布局
  4. 记录-- vue+element树节点的标注
  5. Java中如何获取字符串的Unicode编码
  6. java组合与继承始示例_排列组合:用公式示例解释的差异
  7. 推荐专栏丨《DBA的奋斗路》
  8. u盘启动 联想一体机_联想笔记本电脑怎么重装win10系统
  9. 电脑测速软件_肛需软件!这个特殊版本,值得永久珍藏!
  10. 变位齿轮重合度计算公式_渐开线圆柱齿轮传动的重合度计算.pdf
  11. 魅族16xs可升级Android10吗,手机评测 篇十一:用了魅族16Xs半个月,谈谈我的使用感受...
  12. Linux下使用FDDB 测试MTCNN人脸检测模型生成 ROC 曲线
  13. 维宏控制卡win7 驱动_维宏雕刻机控制卡驱动
  14. excel二极管伏安特性曲线_电视机不被烧,是因为它?一个拥有反向特性的稳压二极管...
  15. 创维电视显示服务器异常,创维网络电视,看在线电影及网络异常的处理!
  16. stata面板数据gmm回归_GMM估计的Stata操作流程
  17. Python中的turtle.right()方法的用法示例
  18. Python3 基础语法知识1
  19. 全新视角!带你一文读懂ChatGPT!
  20. [读论文]CVPR2019: Occupancy Networks: Learning 3D Reconstruction in Function Space

热门文章

  1. 电脑保存或者另存为文件时显示文件名无效
  2. sql优化之oder by
  3. Python print输出不换行没空格
  4. 【RocketMQ】ubuntu18下部署RocketMQ集群
  5. mp4 转 jpg 图片
  6. ILRuntime热更新
  7. ios 借贷类app,贷款超市类app,如何以最快的时间一次性通过审核,下面一一为你解答
  8. 有没有可以刷python题的软件_这个工具,30分钟可以把科研人一天的工作都给干完!...
  9. JAVA布局模式:GridBagConstraints
  10. 给自己的QQ群开启腾讯官方的群聊机器人