小程序中有不少地方都会用到注册用户信息的地方,用户须要填写手机号等,有了这个组件能够快速获取微信绑定手机号码,无须用户填写。html
1.getPhoneNumber这个组件经过button来实现(别的标签无效)。将button中的open-type=“getPhoneNumber”,而且绑定bindgetphonenumber事件获取回调。算法
<span style="font-size:14px;"><button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button></span>2.在使用这个组件以前必须先调用login接口,若是没有调用login点击button时会提示先调用login。
App({ onLaunch: function () { wx.login({ success: function (res) { if (res.code) { //发起网络请求 console.log(res.code) } else { console.log('获取用户登陆态失败!' + res.errMsg) } } }); } })
3.经过bindgetphonenumber绑定的事件来获取回调。回调的参数有三个,小程序
errMsg:用户点击取消或受权的信息回调。api
iv:加密算法的初始向量(若是用户没有赞成受权则为undefined)。微信
encryptedData: 用户信息的加密数据(若是用户没有赞成受权一样返回undefined)网络
getPhoneNumber: function(e) { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){ wx.showModal({ title: '提示', showCancel: false, content: '未受权', success: function (res) { } }) } else { wx.showModal({ title: '提示', showCancel: false, content: '赞成受权', success: function (res) { } }) } }
5.用户赞成受权,咱们能够根据login时获取到的code来经过后台以及微信处理拿到session_key,最后经过app_id,session_key,iv,encryptedData(用户赞成受权errMsg返回‘getPhoneNumber:ok’)session