小程序获取手机号码出现-41003的错误

此类问题出现在获取用户信息、手机号码上,登录的时候,code的获取,解密出来的session_key不匹配或过期,

示例代码:

 /**
   * 获取用户绑定微信的手机号码
   */
  getPhoneNumber:function (e) {
   // console.log(e.detail.errMsg)       //用户点击取消或授权的信息回调。
    //后台还需得到session_key,openid
    //使用接口 wx.checkSession可以校验 session_key 是否有效
    var that = this;
    
     wx.checkSession({
          success: function (res) {

        if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
               //拒绝授权绑定手机号码
               console.log("拒绝授权绑定手机号码")
          } else {//同意授权
        
          var ency = encodeURIComponent(e.detail.encryptedData); //加密的用户数据
          var iv = encodeURIComponent(e.detail.iv);  //与用户数据一同返回的初始向量 
            //获取用户登录的code
           
                var code=that.data.code;
        //解密手机    
                util.post('getPhoneNumber',{
                    encryptedData : ency,
                    iv : iv,
                    code :code, 
                    }).then((res) =>{
                    
                     if (res && res.code == 1) {       
                           //解密成功返回用户手机:phoneNumber
                     } else{
                         //获取用户手机失败
                     }                  
                })
            //解密手机                    
          }      
          },fail(){
              //用户登录过期
            wx.showToast({
              title: "登陆过期,重新登陆中",
              icon: 'loading',
              duration: 1500
            })
            wx.login({
                 success: function () {
                    that.data.code = res.code;
                   that.getPhoneNumber();
                 }
               })
          },
       });
  },

解决方法:

1.要用wx.checkSession检查登录是否过期

2.code的获取必须在点击获取用户信息之前(获取encryptedData等数据),可以在进入页面就获取登录的code,或是登录的时候,将code存为全局变量

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值