微信jssdk踩坑之签名错误invalid signature

 更新时间:2020年05月19日 08:33:21   作者:麦叶  
这篇文章主要介绍了微信jssdk踩坑之签名错误invalid signature,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

最近做公众号网页开发,使用微信 jssdk 页面签名时 IOS 中一直报错,这才刚开始就被这只拦路虎拦住了,报错如下:

然而 Android 和开发者工具中好得很,没有任何问题:

既然提示 签名非法 ,那就是签名有问题咯,但是同样的接口,为什么Android没问题?是真是假还是用官方的签名校验工具验证下:

生成的签名完全没有问题,这就奇怪了,按照网上说的 url 改成如下方式也不行:

url = window.location.href.split('#')[0]

突然看到网上有人说是因为 SPA 的原因,经过几番测试,问题锁定在了 SPA 。先来解释下为什么会这样,我们使用 Vue Router 切换页面时,底层使用的是 pushState 技术,这是 H5 的一个新特性,虽然表面上看页面的 path 变了,内容也换了,但是页面是没有刷新的。

现在知道问题出在哪里,再来实际确认一下。首先进入项目的首页,地址是 https://www.abc.com/weixin/quan?rr=234wfwf ,然后点击进入我们要分享的页面,这时候会提示 invalid signature ,这时jssdk是配置失败的,分享出去的就是原始的页面链接,然而问题出现了:

分享后的链接仍然是首页进入的链接,这是微信的BUG啊,原来在微信的网页中不支持 pushState ,这就导致我们在jssdk从配置时传入的 urlwindow.location.href 得到)和微信识别到的不一样,这时候在分享的页面刷新一下,配置就会正常。

后面再看官方文档时也提到了这一点:

然而我的Android没这个问题,iOS反而出现了这个问题(IOS版本13.3.1,微信版本7.0.9,jssdk 1.6)

如何解决

在跳转到要分享的页面时,不用 pushState ,在 Vue router 中就是不用 push 方式跳转,方式如下:

window.location.href = 要跳转的链接
// _this.$router.push({
// …
// })

既然 SPA 在微信中只认第一个页面的 path ,那我们就在第一次进入页面时记录下 path ,其他页面用这个 path 。我们在 App.vue 或者 main.js 中记录下这个 path

window.sessionStorage.setItem('firstEntryUrl', window.location.href)

然后在需要分享的页面,使用这个 path

let url = window.location.href.split('#')[0]
if (utils.isIOS() && window.sessionStorage.getItem('firstEntryUrl')) {
	url = window.sessionStorage.getItem('firstEntryUrl').split('#')[0]
}

经测试,上述两种方法都能完美解决。

到此这篇关于微信jssdk踩坑之签名错误invalid signature的文章就介绍到这了,更多相关微信jssdk 签名错误 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS远程获取网页源代码实例

    JS远程获取网页源代码实例

    获取网页源代码的方法有很多,本文为大家介绍下使用JS是如何做到的,感兴趣的朋友可以学习下哦
    2013-09-09
  • JavaScript中的this引用(推荐)

    JavaScript中的this引用(推荐)

    this是javascript的一个关键字,随着函数使用场合不同,this的值会发生变化。这篇文章主要介绍了JavaScript中的this引用的相关资料,非常不错,需要的朋友可以参考下
    2016-08-08
  • js实现n秒倒计时后才可以点击的效果

    js实现n秒倒计时后才可以点击的效果

    这篇文章主要介绍了js点击按钮在倒计时后才可以点击的效果,需要的朋友可以参考下
    2015-12-12
  • js数字转中文两种实现方法

    js数字转中文两种实现方法

    在前端开发中有时候会需要到将阿拉伯数字转化为中文,当前做个记录,提供自己之后翻阅,这篇文章主要给大家介绍了关于js数字转中文两种实现方法的相关资料,需要的朋友可以参考下
    2023-10-10
  • JavaScript 开发规范要求(图文并茂)

    JavaScript 开发规范要求(图文并茂)

    作为一名开发人员(WEB前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题。
    2010-06-06
  • js正文内容高亮效果的实现方法

    js正文内容高亮效果的实现方法

    这篇文章介绍了js正文内容高亮效果的实现方法,有需要的朋友可以参考一下
    2013-06-06
  • 小程序瀑布流组件实现翻页与图片懒加载

    小程序瀑布流组件实现翻页与图片懒加载

    这篇文章主要介绍了小程序瀑布流组件实现翻页与图片懒加载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 微信小程序中weui用法解析

    微信小程序中weui用法解析

    这篇文章主要介绍了微信小程序中weui用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 利用JS打造黑客代码雨效果

    利用JS打造黑客代码雨效果

    window.onload()方法用于在网页加载完毕后立刻执行的操作,即当 HTML 文档加载完毕后,立刻执行某个方法。本文将用window.onload()打造黑客代码雨效果,感兴趣的可以尝试一下
    2022-06-06
  • 原生js滑动轮播封装

    原生js滑动轮播封装

    这篇文章主要为大家详细介绍了原生js滑动轮播封装,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07

最新评论