微信分享,安卓可以ios签名无效

一、微信首次分享,安卓可以分享成功,但是ios下,签名失效

确认基本配置没有错之后(具体配置请查看官方文档),发现是URL导致的签名失效。
苹果在微信中浏览器机制和安卓不同,有IOS缓存问题、和IOS对单页面的优化问题,安卓进行页面跳转分享时会刷新当前的url,而苹果不会,苹果是通过历史记录进来的,不会刷新url所以会导致签名失败
在跳转去分享页面时,不要使用$router.push({ path: ‘分享页URL’})方法,使用window.location.href=‘分享页URL’

二、二次分享签名无效

首次分享成功后,在进行二次分享的时候ios又报了签名无效,最后发现还是URL的错。
由于二次分享后的URL上带上了多余的参数?from=singlemessage&isappinstalled=0wx.config在获取签名的时候使用的url跟服务器签名所使用的url不一致,导致签名无效。
具体办法是,截取URL上多余的部分

 //根据字段看网址是否拼接&字符串
    getQueryString(name) {
          var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
          var r = window.location.search.substr(1).match(reg);
          if (r != null)
              return unescape(r[2]);
          return null;
        },
        
		var from = _self.getQueryString('from');
        var appinstall =_self.getQueryString('appinstall');
        var isappinstalled =_self.getQueryString('isappinstalled');
        var sec = _self.getQueryString('sec');
        var timekey = _self.getQueryString('timekey');
        var code = _self.getQueryString('code'); //判断加上code是为了防止无限刷新
        var state = _self.getQueryString('state');
        var url = location.href;
        if(from || appinstall || isappinstalled || sec || timekey || code || state){//假如拼接上了 
            url = window.location.href.split('?')[0];
        }
        if (window.entryUrl == undefined) {
             window.entryUrl = location.href;
           }
export function isAndroid () {
      var u = navigator.userAgent
      var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
      if (isAndroid) {
        return true
      } else {
        return false
      }
    }

获取签名的时候的URL:url: isAndroid() ? url : window.entryUrl

发布了27 篇原创文章 · 获赞 21 · 访问量 4593

猜你喜欢

转载自blog.csdn.net/weixin_43997143/article/details/93723429