价值产生信心,信心产生热忱,而热忱则征服世界。——华特·H·柯亭姆
我们在uniapp
开发中有时会需要获取用户的手机号
可以在官方文档找到对应的方法
这里注意一点,只能通过button
进行点击获取
![image-20210606234600326](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210606234600326.png)
![image-20210606232622281](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210606232622281.png)
但我们这样获取到后还需要解密
比如我这里获取到的
<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>
|
![image-20210606232933403](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210606232933403.png)
你会发现获取到的是一串密文
![image-20210606232955137](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210606232955137.png)
这个我们需要用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
![image-20210606233703061](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210606233703061.png)
去换取openid
和session_key
然后再用微信官方提供的一个js
去解密
下载地址
我们这里是node
环境
所以引入node
能用的这个js
即可
![image-20210606234020683](https://waibi.oss-cn-chengdu.aliyuncs.com/picGo/image-20210606234020683.png)
使用方式在上面的那个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)
|
解密完成后即可获取手机号~