关于小程序手机号授权的问题,后端接口错误码-41003
发表时间:2020-9-29
发布人:葵宇科技
浏览次数:222
前言
昨天做了小程序一键授权登录的功能,点击登录按钮需要用户授权小程序获取用户绑定的手机号,后端接口使用了微信提供的demo,链接在这里[微信解密demo](https://res.wx.qq.com/wxdoc/dist/assets/media/aes-sample.eae1f364.zip),按照微信官方文档的小程序拉取授权手机号的操作步骤,发现总是报错误码-41003解决方案
小程序的button按钮的一个开放功能小程序button按钮开放能力
上代码
代码如下(示例):
<!--wxml-->
<button class='bottom' open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">
授权登录
</button>
//js代码
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
wx.showModal({
title: '提示',
showCancel: false,
content: '未授权',
success: function (res) { }
})
} else {
//调用接口获取登录凭证
wx.login({
success: function (res) {
//获取到的code
var code = res.code;
if (res.code) {
//发起网络请求
console.log(res.code)
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
var that = this;
console.log("同意授权")
//获取openid、session_key
wx.request({
url: 'xxxxxxxxxx/good/getOpid',
data: {
code: code,
},
header: {
'content-type': 'application/json'
},
success: function (res) {
var se_key = res.data.session_key // wx_login()接口返回成功的值有openid、session_key、unionid
var encryptedData = encodeURI(e.detail.encryptedData) // 完整的加密数据
var iv = e.detail.iv //加密算法的初始向量
//换取手机号
wx.request({
url: 'xxxxxxx/demo.php',
data:{
encryptedData:encryptedData,
iv:iv,
se_key:se_key
},
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method:'POST',
success:function(res){
console.log(res.data,"获取到的用户手机号")
}
})
},
});
}
});
}
},
需要注意的地方
用红框圈住的地方是错误的原因,有些博客这个地方没有写这个函数,有的写得是encodeURLComponent(),反正我的这么写是对的,朋友们可以自己去尝试一下