几乎每一个开发用于微信公众号页面的工程师都遇到过微信jssdk
报的各种错误,通常是permission denied
,类似这样:
通常他们会建议你把debug
选项开开,比如这样:
wechat.config({ debug: true, appId: appId, timestamp: timestamp, nonceStr: nonceStr, signature: signature, jsApiList: ['scanQRCode'], });
结果你又遇到了invalid signature
。类似这样:
签名不对,这是什么意思?可是这签名是后端给过来的,我怎么知道它为什么不对?后端用的是标准算法,不可能不对啊。
查网上各种教程,或者微信官网,他们总是不厌其烦地告诉你,让你去检查签名算法,然而根本没有用!
90%
的这种情况下,其实只是一个原因:你用于计算签名的URL
地址不对,跟算法没有任何关系,完全不必浪费时间去看什么签名算法。
微信要求:如果我们需要在页面中调用微信的某个方法,则必须用这个页面的 然而你以为事情就这样结束了?太天真。你的页面还是无法正常使用微信函数的。 因为:微信内嵌浏览器在 在安卓下,你确实用上面的方法是可以调用了。但是在 比如说,你在微信公众号的某个菜单链接进入了 知道了原因,就有很多种解决办法。 首先,我们可以在入口的 然后,在 这样我们就有效地区分开了 所以我们还需要在微信公众号的每一个入口菜单链接里加一个特殊的参数,例如 这里我用了 这样似乎就解决了微信签名失败的问题。 但是,我们又遇到了另外一种情况:在微信小程序里用 至此,各种签名错误的问题才算是全部解决。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。URL
地址获取签名。听上去似乎很好理解,但是实际上URL
地址包含的部分很多,有问号,有#
号,你所要做的是取出#
前面的部分。比如说你的URL
地址是这样:https://www.abc.com/abc.html"htmlcode">
let wechaturl = window.location.href.split('#')[0];
iOS
和安卓下的表现不一样。iOS
下,签名依然失败!因为在iOS
下,微信需要你传递的是入口URL
,而不是当前页面的URL
!A
页面,然后从A
页面的某个链接跳转到B
页面,然后你在B
页面获取签名,如果是在安卓下,你应该用B
页面的URL
地址来获取,但是在iOS
下,你还必须用A
页面的URL
地址来获取,否则就还是签名失败!A
页面里增加这样的判断:
if (navigator.userAgent.indexOf('iPhone') !== -1) {
window.wechaturl = window.location + '';
}
B
页面需要调用签名的地方,再增加这样的判断:
let wechaturl = window.location.href.split('#')[0];
if (window.wechaturl !== undefined) {
wechaturl = window.wechaturl;
}
iOS
和安卓。但问题是在iOS
下,如果我的另外一个菜单入口是B
页面,我从B
页面跳转到A
页面,这时候我的入口链接被强制变成了A
页面,依然会产生签名失败的错误。wechat=1
,变成这样:https://www.abc.com/abc.html"htmlcode">
if (navigator.userAgent.indexOf('iPhone') !== -1) {
if (this.$route.query.wechat !== undefined && this.$route.query.wechat === '1') {
window.wechaturl = window.location + '';
}
}
vue
的写法,但原理是一样的。只有我检测到了wechat
这个参数,我才认为当前页面是入口页面,如果没有检测到,则不必强行设置为入口页面。web-view
内嵌的网页,在安卓下也报permission denied
和invalid signature
错误。不过有了上面的经验,我们诊断错误根源还是URL
入口地址的问题。果然,在安卓下用入口地址获取签名成功,而用当前地址获取签名失败,为此,我们在入口页面里再加一个判断:
if (navigator.userAgent.indexOf('miniProgram') !== -1) {
window.wechaturl = window.location + '';
}
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】