价值产生信心,信心产生热忱,而热忱则征服世界。——华特·H·柯亭姆
我们在uniapp开发中有时会需要获取用户的手机号
可以在官方文档找到对应的方法
这里注意一点,只能通过button进行点击获取


但我们这样获取到后还需要解密
比如我这里获取到的
| <template><view><button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">点我获取手机号</button></view>
 </template>
 
 <script>
 export default {
 data() {
 return {};
 },
 methods: {
 getPhoneNumber(e) {
 console.log(e.detail.errMsg);
 console.log(e.detail.iv);
 console.log(e.detail.encryptedData);
 }
 }
 };
 </script>
 
 | 

你会发现获取到的是一串密文

这个我们需要用session_key
需要通过调用wx.login
| wx.login({success (res) {
 if (res.code) {
 console.log('获取code成功,code为:' + res.code)
 } else {
 console.log('登录失败!' + res.errMsg)
 }
 }
 })
 
 | 
获取一个code作为参数
然后再加上appid和appsecrect调用微信提供的api

去换取openid和session_key
然后再用微信官方提供的一个js去解密
下载地址
我们这里是node环境
所以引入node能用的这个js即可

使用方式在上面的那个demo.js中有
打开就是这样的
| var WXBizDataCrypt = require('./WXBizDataCrypt')
 var appId = 'wx4f4bc4dec97d474b'
 var sessionKey = 'tiihtNczf5v6AKRyjwEUhQ=='
 var encryptedData =
 'CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM'+
 'QmRzooG2xrDcvSnxIMXFufNstNGTyaGS'+
 '9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+'+
 '3hVbJSRgv+4lGOETKUQz6OYStslQ142d'+
 'NCuabNPGBzlooOmB231qMM85d2/fV6Ch'+
 'evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6'+
 '/1Xx1COxFvrc2d7UL/lmHInNlxuacJXw'+
 'u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn'+
 '/Hz7saL8xz+W//FRAUid1OksQaQx4CMs'+
 '8LOddcQhULW4ucetDf96JcR3g0gfRK4P'+
 'C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB'+
 '6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns'+
 '/8wR2SiRS7MNACwTyrGvt9ts8p12PKFd'+
 'lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV'+
 'oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG'+
 '20f0a04COwfneQAGGwd5oa+T8yO5hzuy'+
 'Db/XcxxmK01EpqOyuxINew=='
 var iv = 'r7BXXKkLb8qrSNn05n0qiA=='
 
 var pc = new WXBizDataCrypt(appId, sessionKey)
 
 var data = pc.decryptData(encryptedData , iv)
 
 console.log('解密后 data: ', data)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
解密完成后即可获取手机号~