參考資料:
頁面增加一個按鈕
<button open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber">喚起授權</button>
前端解密
安裝 crypto-js
npm install crypto-js
下載 WXBizDataCrypt.js 文件
打開Node文件夾,把 WXBizDataCrypt.js 文件放入你的項目中。(比如我是放在我的common文件夾下)
在需要解密的頁面引用該文件
import WXBizDataCrypt from "@/common/WXBizDataCrypt.js"; //請以你的實際地址為准
具體代碼如下,關鍵位置請看注釋
<script>
//在需要解密的頁面引用該文件
import WXBizDataCrypt from "@/common/WXBizDataCrypt.js";
export default {
data() {
return {}
},
methods: {
getPhoneNumber(PhoneNumber) {
let appid = "wxce185cd1da123456" //需替換
let secret = "25d0fe7478355910fc143ce6b1234567" //需替換
//調用 wx.login 接口,獲取code
uni.login({
provider: 'weixin',
success: res => {
let url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret +
'&js_code=' +
res.code + '&grant_type=authorization_code';
//用 code 換取 session 和 openId
uni.request({
url: url, // 請求路徑
success: res => { //成功res返回openid,session_key
// console.log(res)
//解密用戶信息
let pc = new WXBizDataCrypt(appid, res.data.session_key);
let data = pc.decryptData(PhoneNumber.detail.encryptedData, PhoneNumber.detail.iv);
// //data就是最終解密的用戶信息
// countryCode: "86" 區號
// phoneNumber: "15634123456" 用戶綁定的手機號(國外手機號會有區號)
// purePhoneNumber: "15634123456" 沒有區號的手機號
// watermark:
// appid: "wxce185cd1da123456"
// timestamp: 1607906868
console.log(data)
},
fail: err => {
console.log(err)
}
})
}
})
}
}
}
</script>

