小程序获取手机号完整流程 弹出框获取电话号码
1️⃣ 前提条件
- 使用微信小程序
- 小程序已注册并通过审核
- 后端可存储 session_key2️⃣ 小程序端按钮
<button type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber"
>获取手机号
</button>3️⃣ 点击按钮事件处理
decryptPhoneNumber(event) {if (event.detail.errMsg === 'getPhoneNumber:ok') {const { encryptedData, iv } = event.detail;// 发送给后端解密} else {console.log('用户拒绝授权手机号');}
}4️⃣ 前端请求后端解密
wx.request({url: '/api/decrypt-phone',method: 'POST',data: { encryptedData, iv },success(res) {console.log('手机号绑定成功:', res.data.phoneNumber);}
})5️⃣ 后端解密流程(Node.js 示例)
const crypto = require('crypto');function decryptPhoneData(encryptedData, iv, sessionKey) {const decipher = crypto.createDecipheriv('aes-128-cbc',Buffer.from(sessionKey, 'base64'),Buffer.from(iv, 'base64'));decipher.setAutoPadding(true);let decoded = decipher.update(encryptedData, 'base64', 'utf8');decoded += decipher.final('utf8');return JSON.parse(decoded);
}6️⃣ 前端显示手机号
this.phoneNumber = res.data.phoneNumber;
console.log('绑定的手机号:', this.phoneNumber);7️⃣ 全流程概览
点击按钮 -> 弹窗授权 -> 前端获取 encryptedData + iv
-> 发送给后端 -> 后端解密 -> 返回真实手机号
-> 前端显示