微信小程序 获取用户手机号



  • 微信小程序 获取用户手机号,第一次总会解密失败,第二次就好了,当我退出,再次登录后,又解密失败,刷新后再次登录又可以登录了,请问这是什么原因呢?

    //小程序端代码
    Taro.request({
                         url: ''
                         method: 'GET',
                      }).then(resx => {
                         if (resx) {
                            Taro.setStorage({key: 'openid', data: resx.data});
                            Taro.request({
                               url: '',
                               data: {
                                  encryptedData: encryptedData,
                                  iv: iv,
                                  sessionKey: resx.data.session_key,
                               },
                               method: 'GET',
                            }).then(res => {
                            })
                         }
                      })
    
    //服务端代码,这里是调用的微信提供的解密方法
    getPhoneNumber : async (req, res) => {
          let appId = '';
          let sessionKey = req.query.sessionKey;
          let encryptedData = req.query.encryptedData;
          let iv = req.query.iv;
          let pc = new WXBizDataCrypt(appId, sessionKey);
          let data = pc.decryptData(encryptedData, iv);
          return await data;
       },
    


  • 用小程序原生写法会这样么? 这里内部没有做什么操作



  • getMobile = (e) => {
    let _this = this
    Taro.login({
    success: function (res) {
    _this.setState({
    code: res.code
    })
    }
    })
    this.setState({
    phoneDate: e.detail
    })
    if (!e.target.encryptedData) {
    return null
    } else {
    let data: any = {}
    data.code = this.state.code
    data.iv = e.detail.iv
    data.encryptedData = e.detail.encryptedData

      this.props.onWxLogin(data)
      Taro.showLoading()
    }
    

    }

    我之前也遇到这样的了。我现在用这种写法基本不会出现你这个问题了


登录后回复