1. 首先注册需要用的到jssdk接口,在hash模式下,注册的地址需要是#之前的,实现代码如下

  var url = ''
  if (document.URL.indexOf('/#/') !== -1) {
    url = document.URL.split('#')[0]
  } else if (document.URL.indexOf('/?#/') !== -1) {
    url = document.URL.split('#')[0].split('?')[0] + '?'
  }
  api({
    method: 'POST',
    url: `${service.getConfig}?sid=${window.localStorage.getItem('sid')}&url=${url}`,
    data: {
      'url': url
    }
  }).then((res) => {
    if (res) {
      wx.config({
        debug: false,
        appId: res.appId,
        timestamp: res.timestamp,
        nonceStr: res.nonceStr,
        signature: res.signature,
        jsApiList: ['chooseImage', 'previewImage', 'uploadImage', 'getLocalImgData', 'startRecord', 'stopRecord', 'onVoiceRecordEnd', 'playVoice', 'uploadVoice', 'chooseWXPay', 'scanQRCode', 'hideMenuItems', 'previewImage', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'getNetworkType']
      }, function (res) {
        if (res.errMsg === 'config:ok') {
        } else {
          window.reload()
        }
      })
    }
  }).catch((err) => {
    if (err) throw err
  })

2. 分享到朋友圈,发送给好友

     wx.ready(function () {
      wx.onMenuShareTimeline({
        title: '', // 分享标题
        link: urlBase, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: '', // 分享图标
        success: function () {
        }
      })
      // desc: '分享描述', // 分享描述
      wx.onMenuShareAppMessage({
        title: '', // 分享标题
        desc: '', // 分享描述
        link: urlBase, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: '', // 分享图标
        type: '', // 分享类型,music、video或link,不填默认为link
        dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
        success: function () {
          // 用户点击了分享后执行的回调函数
        }
      })
    })

3. 分享的时候微信在默认在url中加参数导致分享链接失效 

原因分析: 通过filder发现是跳转获取open_id的时候state参数是前端地址,state参数有问题导致的

解决办法: 直接在获取open_id的时候暴力的处理分享所带的参数即可解决

Logo

前往低代码交流专区

更多推荐