小程序獲取手機號完整流程 彈出框獲取電話號碼
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
-> 發送給后端 -> 后端解密 -> 返回真實手機號
-> 前端顯示