很多开发者在微信小程序授权获取用户手机号,经常出现授权失败获取不到手机号的问题,正常小程序调用getuserinfo接口拿到encryptedData,iv,然后给服务端 4.服务端拿到客户端的encryptedData,vi还有之前的sessionKey去解密得到 unionId等用户信息 注意:客户端上传的encryptedData需要encodeURIComponent方法进行URL编码,对应服务端需要URL解码 小程序,解决方法如下:
1、前端对encodeURIComponent(encryptedData)对encryptedData进行URL编码
async getPhoneNumber(e){ var __that = this var iv = e.$wx.detail.iv; var encryptedData = e.$wx.detail.encryptedData; wx.login({ success:async function(res){ const getUserPhones = await getUserPhone2({ code: res.code, iv: iv, encryptedData: encodeURIComponent(encryptedData), sharePhone: __that.sharePhone, }) if(getUserPhones.data.code==200){ wepy.wx.setStorage({ key:"phone", data:getUserPhones.data.data }) __that.phone = getUserPhones.data.data }else{ wepy.wx.showModal({ title: '提示', content: '网络错误,授权失败,请重试' }) } } }) }
2、后端使用urldecode()函数对encryptedData解码
$encryptedData=urldecode($_GET["encryptedData"]);
文章评论(0)