【微信小程序获取用户手机号

javascript 复制代码
微信小程序获取用户手机号有2种,一种是前端自己解密,一种是获取后发给后端,后端去解密
重点:要在微信公众平台设置里面绑定微信开放平台账号,不然反解不出来用户手机号

上代码:
<button style="font-size: 16px;" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber">授权并获取手机号</button>
import WXBizDataCrypt from "@/util/WXBizDataCrypt.js"
onGetPhoneNumber(e){
	uni.login({
					 provider: 'weixin',
					 success: function ({ code }) {
						uni.request({
							url: 'https://api.weixin.qq.com/sns/jscode2session', // 请求微信服务器
							method: 'GET',
							data: {
								appid: '', //你的小程序的APPID
								secret: '', //你的小程序秘钥secret,  
								js_code: code, //uni.login 登录成功后的code
								grant_type: 'authorization_code' //此处为固定值
							},
							success: (res) => {
								console.log('获取信息', res.data);
								console.log(e, "获取手机号需要的参数");
								let pc = new WXBizDataCrypt('你的小程序的APPID', res.data.session_key);
								let data = pc.decryptData(e.detail.encryptedData, e.detail.iv);
								if (data.phoneNumber != '') {
									console.log(data.phoneNumber)
								}
							}
						});
					 },
					 fail: function (err) {
						 uni.showToast({ title: '请前往小程序使用完整服务', icon: 'none' });
						 reject(err);
					 },
				 })
}

官网文件获取路径

javascript 复制代码
WXBizDataCrypt.js 文件
这个链接里面有解密包或者直接用我下面的代码

var crypto = require('crypto')

function WXBizDataCrypt(appId, sessionKey) {
  this.appId = appId
  this.sessionKey = sessionKey
}

WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
  // base64 decode
  var 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
相关推荐
咸虾米_7 小时前
小程序流量主哪种广告最赚钱?各类广告收益与实操建议
微信小程序·小程序·小程序开发·流量主广告
00后程序员张11 小时前
Windows / Linux / Mac 上不用 Xcode 把 IPA 上传到 App Store,upload 命令详解
android·ios·小程序·https·uni-app·iphone·webview
梓彤科技1 天前
样式已经更新,用户仍看到旧页面?武汉网站建设中的缓存版本控制
搜索引擎·小程序·seo·网站开发·geo
mashirro1 天前
记一次基于ruoyi-vue新增小程序服务模块,小程序登陆相关
vue.js·小程序·mybatis
2601_956743682 天前
技术选型指南|D‑coding 小程序开发,定制能力如何转化项目服务价值
小程序·coding·开发经验
weishuangyun1232 天前
微信小程序怎么选公司?上线流程详解
大数据·小程序
show4332 天前
2026微信小程序视频转文字多语种识别引擎技术选型:22种方言25种外语挑战
微信小程序·小程序·音视频
lhldsg2 天前
县城外卖系统开发实战:从需求分析到上线全流程指南
java·小程序·需求分析
Kingexpand_com2 天前
旅游小程序怎么选型?模板与定制二次开发技术对比解析
小程序·旅游·小程序开发·旅行·定制开发
万岳科技系统开发2 天前
外卖跑腿小程序如何提升本地生活服务平台运营效率?
大数据·小程序·生活