La forma segura y correcta para que el subprograma WeChat obtenga el número de teléfono móvil del usuario es pasar el iv obtenido y otra información al backend, dejar que el backend lo descifre y luego proporcionar una interfaz para volver al frontend.
Pero si encuentra un backend más general o un backend perezoso, el frontend también puede intentar completar el descifrado del número de teléfono usted mismo.
1. Use el botón de componente de número de teléfono móvil autorizado
<view class="button">
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
</view>
2. Descargue el archivo descifrado RdWXBizDataCrypt
https://download.csdn.net/download/qq_35946021/87123755 descarga gratuita
3. Haga referencia al archivo donde necesita ser descifrado
var WXBizDataCrypt = require('../../utils/RdWXBizDataCrypt');
4. Use primero la interfaz de inicio de sesión y luego obtenga la session_key proporcionada por el backend
login(){
wx.login({
success: (res) => {
console.log(res)
api.getOpenidAction({
js_code:res.code
}).then(re=>{
console.log(re)
this.setData({
openid:re.Data.openid,
code:res.code,
session_key:re.Data.session_key
})
})
}
})
},
5. Luego use el componente de número de teléfono móvil para pasar los datos cifrados y el valor iv del parámetro
clave:
nuevo un objeto WXBizDataCrypt, pase APPID y session_key
Luego use el método de descifrado decryptData, pase los parámetros encryptedData y iv
getPhoneNumber (e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e)
var pc = new WXBizDataCrypt("wxexxxxxxxxxxxxx6", this.data.session_key)
var data = pc.decryptData(e.detail.encryptedData , e.detail.iv)
console.log('解密后 data: ', data)
},
La consola imprime los datos cifrados y se pueden utilizar