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


但我们这样获取到后还需要解密
比如我这里获取到的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <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
1 2 3 4 5 6 7 8 9
| 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
中有
打开就是这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| 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)
|
解密完成后即可获取手机号~