手机号及解密"/>
微信小程序获取用户手机号及解密
要获取用户手机号,首先需要用户同意授权其手机号给小程序。可以使用wx.login()获取用户的code,然后调用wx.request()向微信服务器发起请求,获取到session_key和encryptedData等信息,再进行解密。
获取流程如下:
-
先调用wx.login()获取用户的code。
-
在小程序后台配置开发者服务器域名,在小程序中使用wx.request()向服务器发起请求,获取session_key和encryptedData等信息。
-
在服务器端进行解密,可以使用第三方库crypto-js来解密。
-
解密后即可获取用户手机号。
示例代码:
在前端调用:
wx.login({success: res => {// 发送 res.code 到后台换取 openId, sessionKey, unionIdwx.request({url: '',data: {code: res.code,encryptedData: res.encryptedData,iv: res.iv},success: function (res) {console.log(res.data.phoneNumber);}})}
})
在后端解密:
const crypto = require('crypto-js');function decodePhoneNumber(sessionKey, encryptedData, iv) {const sessionKeyBuffer = new Buffer(sessionKey, 'base64');const encryptedDataBuffer = new Buffer(encryptedData, 'base64');const ivBuffer = new Buffer(iv, 'base64');const decipher = crypto.createDecipheriv('aes-128-cbc', sessionKeyBuffer, ivBuffer);decipher.setAutoPadding(true);let decoded = decipher.update(encryptedDataBuffer, 'binary', 'utf8');decoded += decipher.final('utf8');decoded = JSON.parse(decoded);if (decoded.watermark.appid !== APPID) {throw new Error('Invalid appId');}return decoded;
}
更多推荐
微信小程序获取用户手机号及解密
发布评论