微信小程序登录时一定概率出现-41003错误的解决方案
在按照官方的文档进行开发时,会发现小程序登录时会出现一定概率的-41003错误,大概是25%左右。
根据网上的一些参考资料,排除数据传输时的错误之后,我认可wx.login和getuserinfo顺序反了这种说法。
在需要和服务端通讯的情况下,按照常理思考的顺序应该是 点击button->获取事件中的userinfo->wx.login->后端处理
但是实际情况需要按照这个顺序 点击button->wx.login->wx.getUserInfo->后端处理
在login后再次getUserinfo确保获取的userinfo是最新的,而点击button获取到的userinfo就不用管了
getUserInfo(e) {
var that = this
if (e.detail.errMsg != "getUserInfo:ok") {
wx.showModal({
title: '登录失败',
content: '授权登录后方可正常使用本小程序功能',
showCancel: false
})
return
}
wx.login({
success: res => {
wx.getUserInfo({
withCredentials: true,
success(e) {
app.getData({
url: 'user/login/index',
data: {
code: res.code,
encryptedData: e.encryptedData,
iv: e.iv,
},
success(res){
wx.showToast({
title: res.msg,
})
that.setData({user:res.data.user})
}
})
}
})
}, fail() {
wx.showModal({
title: '登录失败',
content: '请尝试重新登录或重启小程序',
showCancel: false
})
}
})
},