react 前端框架如何驱动企业数字化转型与创新发展
404
2023-10-29
微信小程序获取手机号授权是常用的小程序开放能力之一,对小程序制作开发人员来说怎么实现该功能呢?
要想获取微信用户绑定的手机号,需要先调用wx.login接口。而且因为需要用户主动触发才能发起获取手机号接口,所以该功能不由API来调用,需用button组件的点击来触发。
使用方法:
将button组件open-type的值设置为getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号。
注意事项:
在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。
代码示例如下:
<button open-type=”getPhoneNumber” bindgetphonenumber=”getPhoneNumber”></button>
JS内getPhoneNumbe组件函数(该事件中最重要的就是在wx.login登录后发起接口请求),这里需要配置参数来给接口:
这些是必不可少的参数,这些齐备才能算一个合法的请求。
appid: “你的小程序APPID”, secret: “你的小程序appsecret”, code: res.code, encryptedData: telObj, iv: ivObj
//通过绑定手机号登录 getPhoneNumber: function (e) { var ivObj = e.detail.iv var telObj = e.detail.encryptedData var codeObj = “”; var that = this; //——执行Login——— wx.login({ success: res => { console.log(‘code转换’, res.code);
//用code传给服务器调换session_key wx.request({ url: ‘https://你的接口文件路径’, //接口地址 data: { appid: “你的小程序APPID”, secret: “你的小程序appsecret”, code: res.code, encryptedData: telObj, iv: ivObj }, success: function (res) { phoneObj = res.data.phoneNumber; console.log(“手机号=”, phoneObj) wx.setStorage({ //存储数据并准备发送给下一页使用 key: “phoneObj”, data: res.data.phoneNumber, }) } })
//—————–是否授权,授权通过进入主页面,授权拒绝则停留在登陆界面 if (e.detail.errMsg == ‘getPhoneNumber:user deny’) { //用户点击拒绝 wx.navigateTo({ url: ‘../index/index’, }) } else { //允许授权执行跳转 wx.navigateTo({ url: ‘../test/test’, }) } } }); },
得到的最终效果展示:
以上就是微信小程序获取手机号授权怎么实现的具体步骤,具体参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~