在微信小程序中获取用户手机号,需要先让用户授权手机号。授权获取手机号可以使用微信官方提供的 wx.login() 和 wx.getUserInfo() API,具体实现步骤如下:
1. 在 app.json 文件中添加 "permission" 字段,用于声明需要获取的用户授权信息。
{ "permission": { "scope.userLocation": { "desc": "获取你的手机号码用于登录" } } }
2. 在页面中调用 wx.login() API,获取用户的 code
wx.login({ success: res => { const code = res.code // 将 code 发送给后端服务器,用于获取 session_key 和 openid } })
3. 在页面中调用 wx.getUserInfo() API,获取用户的加密数据和签名等信息。
wx.getUserInfo({ success: res => { const encryptedData = res.encryptedData const iv = res.iv const signature = res.signature const rawData = res.rawData // 将加密数据和签名等信息发送给后端服务器,用于解密获取用户手机号 } })
4. 后端服务器使用 session_key、encryptedData 和 iv 等信息对用户手机号进行解密。
const sessionKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' const encryptedData = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' const iv = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' const crypto = require('crypto') const decipher = crypto.createDecipheriv('aes-128-cbc', Buffer.from(sessionKey, 'base64'), Buffer.from(iv, 'base64')) let decryptedData = decipher.update(Buffer.from(encryptedData, 'base64')) decryptedData = Buffer.concat([decryptedData, decipher.final()]) decryptedData = decryptedData.toString() console.log(decryptedData) // 输出用户手机号
以上代码即可获取用户手机号,具体实现需要根据自己的业务需求进行调整。