在微信小程序中获取用户手机号,需要先让用户授权手机号。授权获取手机号可以使用微信官方提供的 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)
// 输出用户手机号以上代码即可获取用户手机号,具体实现需要根据自己的业务需求进行调整。