1.先获取session_key ,openid
2.写获取手机号码按钮
<button open-type="getPhoneNumber" @getphonenumber="phonenumber">
<input style="width: 100%;" :clearable="false" type="text" @click="phonenumber" :disabled="true" class="weui-input" v-model="mobile" placeholder="点击获取电话号码" />
</button>
3.弹出获取手机号码框 用户同意 获取加密手机号码信息
/* 获取手机号码 */
phonenumber(res) {
console.log(res)
}
4.通过微信提供的解密方法:可以拿到最终的手机号
下载引入的文件链接地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
5. 把下载好的加密数据解密算法 放入项目 并且引入 进行解密
import WXBizDataCrypt from "../commn/WXBizDataCrypt.js" // 需要引入
/* 获取手机号码 */
phonenumber(mbie) {
let that = this
uni.login({
provider: 'weixin',
success: (res) => {
console.log(res)
uniCloud.callFunction({
name: 'openid',
data: {
code: res.code
}
}).then(opid => {
console.log(opid,'openid');
console.log(mbie,'待解密手机号码');
let pc = new WXBizDataCrypt('你的微信小程序id', opid.result.session_key);
let encryptedData = mbie.detail.encryptedData
let data = pc.decryptData(mbie.detail.encryptedData, mbie.detail.iv);
console.log(data,'就是最终解密的用户信息') //data就是最终解密的用户信息
that.mobile = data.phoneNumber
})
},
fail(res) { // 登录失败
uni.closeAuthView() //关闭一键登录弹出窗口
console.log('失败')
},
})
},