情形描述:
微信小程序官方文档中给出的获取微信用户绑定的手机号方法:
链接: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
此方法是通过调用wx.login()接口,将code,iv,encryptedData传入后端进行解密处理,这种方法适用于有后端专用解密地址,但是如果没有的话就行不通了,不过别慌,下面我将介绍不通过后端解密就能获取到手机号的方法↓↓↓↓↓
--------------------------------------------分割线------------------------------------------------------------------
使用云函数即可实现
云开发开通方式这里就不说了,百度一大堆
实现步骤:
第一步:创建云函数login
找到新建云函数中的index.js文件,将其中的代码替换为下方代码(悄悄说一下,虽然代码是百度的,但是功能完全ok)
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
switch (event.action) {
case 'getcellphone': {
return getCellphone(event);
}
default: {
return
}
}
}
async function getCellphone(event) {
const res = await cloud.getOpenData({
list: [event.id],
})
return {
res,
event
};
}
第二步:在app.js中添加调用云函数方法
wx.cloud.init({
env: '你的环境ID',
traceUser: true,
})
环境ID查看方式:
第三步:wxml中添加button组件,添加相应的bind方法js代码
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号码</button>
getPhoneNumber(e) {
wx.cloud.callFunction({
name: 'login',
data: {
action: 'getcellphone',
id: e.detail.cloudID
},
success: res => {
console.log(res)
}
})
}
最后一步最重要的!!!上传并部署
到这一步就结束了,编译一下看看效果,console出来phoneNumber的值就是我们所需要的手机号码。
总结一下,这个方法对于没有后端提供解密地址的人员来说很方便,但是会有个弊端,对于没有绑定手机号码的微信号来说,就获取不到想要的东西,这种情况我没有遇到过,如有遇到的朋友欢迎和我交流。
不说了,工头喊我搬砖去了。。。。。。