微信小程序 getPhoneNumber获取用户手机号
在使用getPhoneNumber前,可以先看下官方文档:文档地址
在注意这里,官方提到如果不使用之前wx.login调用获取的sessionKey的话,是无法解密由getPhoneNumber获取的encryptedData的。
所以我们需要先调用wx.login:
// An highlighted block
wx.login({
success:(res) => {
app.globalData.code = res.code
wx.request({
url:api.WxLogin,//你的获取sessionKey的后台接口
data:{
code:app.globalData.code//wx.login获取的code
},
method:"GET",
success:(res)=>{
console.log("sessionkey",res.data.data.session_Key);
app.globalData.sessionkey = res.data.data.session_Key;
}
})
}
})
这样我们就成功获取了sessionKey了,然后我们再调用getPhoneNumber:
// An highlighted block
getPhoneNumber(e){
var ivObj = e.detail.iv; //getPhoneNumber返回的数据
var cloudId = e.detail.cloudID;
console.log("sessionkey",app.globalData.sessionkey);
var telObj = e.detail.encryptedData;//getPhoneNumber返回的加密数据
console.log('telobj',telObj);
console.log('ivObj',ivObj);
//-----------------是否授权,授权通过进入主页面,授权拒绝则停留在登陆界面
if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { //用户点击拒绝
that.hideModal();
} else { //允许授权执行跳转
wx.request({
url: api.AES_Decrypt, //你的解密接口地址
data: {
key:app.globalData.sessionkey,//上面获取到的sessionKey
encryptedDataStr: telObj,
iv: ivObj
},
method:"GET",
success: function (res) {
console.log('res',res.data);
var phoneObj = res.data.data.phoneNumber;//获取得到手机号
console.log("手机号=", phoneObj)
wx.setStorage({ //存储数据并准备发送给下一页使用
key: "phoneObj",
data: res.data.data.phoneNumber,
})
fail:function(){
console.log("失败");
}
})
}
}
获取结果:
这样就获取成功啦。