关于小程序手机号授权的问题,后端接口错误码-41003 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

关于小程序手机号授权的问题,后端接口错误码-41003

发表时间:2020-9-29

发布人:葵宇科技

浏览次数:188

前言

昨天做了小程序一键授权登录的功能,点击登录按钮需要用户授权小程序获取用户绑定的手机号,后端接口使用了微信提供的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(),反正我的这么写是对的,朋友们可以自己去尝试一下

相关案例查看更多