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

uniapp 小程序 获取手机号---通过前段获取

<template><!-- 获取手机号,登录内容 --><view><!-- 首先需要先登录获取code码,然后才可以获取用户唯一标识openid以及会话密钥及用于解密获取手机的加密信息 --><view @click="login">登录</view><view class="" @click="get_miyao" style="padding: 40rpx;">获取密钥session_key</view><!-- 获取手机号的加密 --><button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取电话</button><!-- <view @click="check_user">检查是否登录</view> --><view class="" @click="get_user">获取用户信息</view><view @click="jiemi">解密</view><view class="" style="height: 60rpx;"> ========== </view><br><image :src="user_img" mode="" alt="暂无图片"></image><view class="red">用户名:{{user_name}}</view><text class="blue">微信登录成功:{{login_code}}</text><view class="red">手机号:{{phone}}</view><view class="blue">用户唯一标识openid:{{openid}}</view><view class="red">会话密钥-sessionkey:{{session_key}}</view><view class="blue">手机-encryptedData:{{phone_encryptedData}}</view><view class="red">手机-iv:{{phone_iv}}</view><view class="blue">手机-code:{{phone_code}}</view></view>
</template><script>//import WXBizDataCrypt from "@/static/wx/WXBizDataCrypt.js"import WXBizDataCrypt from "../../utils/WXBizDataCrypt"export default {data() {return {phone:'无',user_img:'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSNuo1br3pHCs7Y-RLdS0oc-dflmDaUdm_Jkg&usqp=CAU',user_name:'空',login_code:'空', // 登录返回code码,用于获取用户唯一标识和会话密钥openid:'',// 用户唯一标识session_key:'',// 会话密钥phone_encryptedData:'',phone_iv:'',phone_code:''}},methods: {login(){ // 微信登录uni.login({provider: 'weixin',success: res => {debuggerconsole.log(res)this.login_code = res.code}});},check_user(){ // 检查是否登录uni.checkSession({success:res => {console.log(res)}})},get_user(){ // 获取用户信息uni.getUserProfile({desc: '用户登录',success: res => {console.log(res)this.user_img = res.userInfo.avatarUrlthis.user_name = res.userInfo.nickName}})},getPhoneNumber(res){ // 获取手机号console.log(res)this.phone_code = res.detail.codethis.phone_encryptedData = res.detail.encryptedDatathis.phone_iv = res.detail.iv},get_miyao(){ // 获取密钥 === 需要登录才可以获取密钥uni.request({url: 'https://api.weixin.qq.com/sns/jscode2session',method:'GET',data: {appid: 'wx4e70a3d6c0f866f3',        //你的小程序的APPIDsecret: '9ee0d4c6e1a996fbd90725f4a7176e5f',    //你的小程序秘钥secret,js_code: this.login_code,    //wx.login 登录成功后的codegrant_type:'authorization_code'},success: (res) => {console.log('获取信息',res);  // 换取成功后 暂存这些数据 留作后续操作this.openid=res.data.openid    //openid 用户唯一标识this.session_key=res.data.session_key    //session_key  会话密钥}});},jiemi(){ // 解密需要appid 会话密钥;然后需要手机号的加密字段-let pc = new WXBizDataCrypt('wx4e70a3d6c0f866f3',this.session_key);let data = pc.decryptData(this.phone_encryptedData , this.phone_iv);  console.log(data)       //data就是最终解密的用户信息debuggerthis.phone = data.phoneNumber}}}
</script><style scoped>
image{width: 100rpx;height: 100rpx;
}
.red{background-color: #DD524D;margin: 20rpx 0;
}
.blue{background-color: #007AFF
}
</style>

js 解密文件

import WXBizDataCrypt from "../../utils/WXBizDataCrypt"
//WXBizDataCrypt.js
var crypto = require('crypto')function WXBizDataCrypt(appId, sessionKey) {this.appId = appIdthis.sessionKey = sessionKey
}WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {// base64 decodevar sessionKey = new Buffer(this.sessionKey, 'base64')encryptedData = new Buffer(encryptedData, 'base64')iv = new Buffer(iv, 'base64')try {// 解密var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)// 设置自动 padding 为 true,删除填充补位decipher.setAutoPadding(true)var decoded = decipher.update(encryptedData, 'binary', 'utf8')decoded += decipher.final('utf8')decoded = JSON.parse(decoded)} catch (err) {throw new Error('Illegal Buffer')}if (decoded.watermark.appid !== this.appId) {throw new Error('Illegal Buffer')}return decoded
}module.exports = WXBizDataCrypt

http://www.lryc.cn/news/93274.html

相关文章:

  • 面板安全能力持续增强,新增日志审计功能,1Panel开源面板v1.3.0发布
  • k8s学习-CKS考试必过宝典
  • jmeter如何将上一个请求的结果作为下一个请求的参数
  • JAVA如何学习爬虫呢?
  • 距离保护原理
  • 从微观世界的RST包文视角助力企业网络应用故障排查和优化
  • 企业微信开发,简单测试。
  • element日期选择设置默认时间el-date-picker
  • AB32VG:SDK_AB53XX_V061(3)IO口复用功能的补充资料
  • UnityVR--组件10--UGUI简单介绍
  • k8s 探针
  • 【爬虫】4.4 Scrapy 爬取网站数据
  • PureComponent和Component的区别和底层处理机制
  • python3 爬虫相关学习9:BeautifulSoup 官方文档学习
  • 物联网Lora模块从入门到精通(九)Flash的读取与存储--结题
  • STM32MP157_PRO开发板的第一个驱动程序
  • 你“被”全链路了么?全链路压测实践之理论
  • 基于Tensorflow+SDD+Python人脸口罩识别系统(深度学习)含全部工程源码及模型+视频演示+图片数据集
  • abc200 D 鸽巢原理
  • QT day1 (图形界面设计)
  • JS逆向系列之猿人学爬虫第9题-动态cookie2
  • Java ~ Reference ~ FinalizerHistogram【总结】
  • 【MySQL】一文带你了解SQL
  • python基础学习3【NumPy矩阵与通用函数【矩阵相乘+平方+广播机制+转置】+ save、load、sort、repeat、unique、鸢尾花1】
  • 【Spring学习之更简单的读取和存储Bean对象】教会你使用五大类注解和方法注解去存储 Bean 对象
  • 微客云原生淘宝客APP小程序系统如何定制
  • QT CTK插件开发(六) 多对一插件
  • 【Spring Boot整合MyBatis教程】
  • ThinkPHP3.2.3通过局域网手机访问项目
  • 2306C++虚继承