美文网首页
本人遇到的微信端分享链接错误的处理方式

本人遇到的微信端分享链接错误的处理方式

作者: JC_a165 | 来源:发表于2019-11-11 17:18 被阅读0次

1.bug问题复现(bug问题出现情况)

ios在微信浏览器使用,从A页面进入,然后授权登录后(重定向后进入)。进入到B页面将B页面分享出去。分享出去的B页面打开显示为A页面。
安卓客户端一切正常。

2.bug问题分析

首先ios和安卓在配置微信js-sdk的config时候就有所不同。
IOS:微信IOS版,每次切换路由,SPA的url是不会变的,发起签名请求的url参数必须是当前页面的url就是最初进入页面时的url
Android:微信安卓版,每次切换路由,SPA的url是会变的,发起签名请求的url参数必须是当前页面的url(不是最初进入页面时的)
微信开发文档

步骤三:通过config接口注入权限验证配置
所有需要使用JS-SDK的页面必须先注入配置信息,
否则将无法调用(同一个url仅需调用一次,
对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,
所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

3. 解决方式

// 判断ios还是android
  Vue.prototype.isIosOrAndroid = function () {
    let u = navigator.userAgent;
    let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 // android终端
    let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios终端
    let isStr = ''
    if (isAndroid) {
      isStr = 'android'
    }
    if (isiOS) {
      isStr = 'ios' 
    //配置iOS端的config 使用下文的firstUrl即可
    }
    return isStr
  }
//App.vue中 
//将首次进入页面的链接存储起来
//判断有无授权登录重定向  通过获取当前链接上的参数有无second   有则不存
if (!this.$route.query.second) {
      this.url = window.location.href.split("#")[0];
      localStorage.setItem("firstUrl", this.url);
    }


let url = window.location.href+"&second=1";
    url = encodeURIComponent(url);
    window.location.href =
                  "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
                  res.appId +
                  "&redirect_uri=" +
                  url +
                  "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";


如有错误。 欢迎您指正!!

相关文章

网友评论

      本文标题:本人遇到的微信端分享链接错误的处理方式

      本文链接:https://www.haomeiwen.com/subject/mxptictx.html