uniapp获取手机号
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获取手机号相关推荐
- uniapp获取手机号(详细教程附代码)
uniapp获取手机号(详细教程附代码) 一.获取code 二.通过code获取获取openId 和 session_key 三.让用户授权(同意后需要对数据解密) 个人小程序不能使用这个功能,必须是 ...
- uniapp获取手机号流程
1`. view视图代码 <button class="allow-btn" open-type="getPhoneNumber" @getphonenu ...
- uni-app微信获取手机号,第一次解密总是失败
项目场景: uni-app; 获取code,后台解密手机号 问题描述: 每次第一次登陆,后台都会解密失败 原因分析: code获取错误:导致后台的解密key与code不对应 解决方案: 小程序获取手机 ...
- uni-app微信小程序获取手机号;微信小程序获取手机号,获取到后需要进行解密;微信小程序获取手机号失败 Error:该appId没有权限
方法1.uni-app登录加获取手机号解密-直接看此篇即可解决 微信小程序获取手机号注意点: 1.需要先登录,微信小程序登录看这篇 2.手机号获取到时加密的,需要后端解密或者前端自己解密(解密时候就会 ...
- uniapp获取微信授权登录和手机号一键登录(保姆教程)
uniapp获取微信授权登录(保姆教程) 第一步 下载官方给的解密文件'mWXBizDataCrypt' 没有文件就复制该文件的代码创建一个 var crypto = require('crypto' ...
- uniapp在小程序中登录,获取用户信息,获取手机号逻辑记录
这里写目录标题 概述 uniapp小程序的授权描述 授权的详细说明及使用 1.微信小程序通过`uni.login()`方法可以获取到微信提供的`code` 2.通过登录获取的`code`码可以以获取用 ...
- uni-app开发微信小程序,关于获取手机号事件绑定的坑
闲话少说,直接上代码. 微信官方的代码是这样的: <button open-type="getPhoneNumber" bindgetphonenumber="ge ...
- 【uni-app】uni-app 小程序获取手机号登录
具体业务 小程序使用手机号登录,需要绑定到当前业务系统.获取手机号时序图如下: 实现 前端 uni-app 我对 uni.request 进行了封装,可能请求方式有些不同 <template&g ...
- uniapp微信授权+获取手机号+解密手机号(带图详解)
那废话不多说,开始今天的教程,我会在尾部添加全部代码,如果你懒的自己写,可以复制我的代码,但是里面的一些数据你需要更换,我会标注出来 1.获取微信信息(我的写法是自动获取,而不需要点击触发事件获取). ...
最新文章
- VS2005编译QT4.8.2
- 张恩民 php,php100视频教程第11讲(制作PHP+MYSQL留言板 上)中,张恩民老师提到的php100-11.txt文档...
- 计算机设备布局图,针对不同设备类型创建仪表板布局
- 记录-- vue+element树节点的标注
- Java中如何获取字符串的Unicode编码
- java组合与继承始示例_排列组合:用公式示例解释的差异
- 推荐专栏丨《DBA的奋斗路》
- u盘启动 联想一体机_联想笔记本电脑怎么重装win10系统
- 电脑测速软件_肛需软件!这个特殊版本,值得永久珍藏!
- 变位齿轮重合度计算公式_渐开线圆柱齿轮传动的重合度计算.pdf
- 魅族16xs可升级Android10吗,手机评测 篇十一:用了魅族16Xs半个月,谈谈我的使用感受...
- Linux下使用FDDB 测试MTCNN人脸检测模型生成 ROC 曲线
- 维宏控制卡win7 驱动_维宏雕刻机控制卡驱动
- excel二极管伏安特性曲线_电视机不被烧,是因为它?一个拥有反向特性的稳压二极管...
- 创维电视显示服务器异常,创维网络电视,看在线电影及网络异常的处理!
- stata面板数据gmm回归_GMM估计的Stata操作流程
- Python中的turtle.right()方法的用法示例
- Python3 基础语法知识1
- 全新视角!带你一文读懂ChatGPT!
- [读论文]CVPR2019: Occupancy Networks: Learning 3D Reconstruction in Function Space