javascript - 微信公众平台, config:invalid signature一直爆这个错误,求教如何解决?
PHPz
PHPz 2017-04-11 13:13:33
0
46
11355


然后哦 用这个校验和输出的是一致的也就是说 签名应该没问题吧 但是为什么手机上会显示无效呢 那个环节又出错了

PHPz
PHPz

学习是最好的投资!

全部回复(44)
左手右手慢动作

碰到了同样的问题(并“解决”了):

问题描述:

  1. 单页面应用(使用pushState更新url),iOS 10或Android 6.0

  2. 同样的web代码和网址,使用安卓访问,能正常调用微信API注册并分享;使用iOS 10则注册失败,返回'invalid signature'

  3. signature生成算法没有问题。(将输入和输出贴到微信提供的验证网页上,都一致)

调查发现:

  1. 安卓需要使用当前URL进行微信API注册(即当场调用location.href.split('#')[0])

  2. iOS需要使用进入页面的初始URL进行注册,(即在任何pushstate发生前,调用location.href.split('#')[0])

解决(规避):

  1. 保存进入页面最初的URL,假设为INIT_URL

  2. 根据客户端的不同:
    2.1 安卓:在准备分享前(或发生URL跳转后)使用当前URL进行wx.config, 如果失败,则尝试使用INIT_URL注册

2.2 iOS:在准备分享前(或发生URL跳转后)使用INIT_URL进行wx.config, 如果失败,则尝试使用当前URL注册

结论:

  1. 感觉没有找到问题的真相。。。。

左手右手慢动作

也提供一个解决方法,url和签名多次检查没有错误,开始一直根据文档提示可用location.href.split('#')[0]获取,而且需要encodeURIComponent。不用encodeURIComponent转义,之后请求OK。只能说无语了

PHPzhong

引起这个问题的原因是什么呢?我们也遇到了困扰,但是没有找到问题所在。
希望看到的朋友指点~~

迷茫

也是这个问题,蛋都碎了......

PHPzhong

楼主,你这个问题解决了吗?我也碰到这个问题了,好纠结啊!

伊谢尔伦

不行,我文件名也放出来了,也是对的,还是一样报错,不知道问题出在哪,太坑了

刘奇

一次就成功的路过。。

洪涛

@docejack 正解,页面当前的url一定要和签名用的url一致

黄舟

我的也出现这种问题,但是我的这种问题只出现在ios9以上,安卓的完全正常,ios有时候正常 有时候不正常,不正常的时候我也用签名工具验证了,但还是不行,url我也比对了 都是完全一样的 实在搞不清,求大神指点 跪求 希望大神看到后指点一下 万分感谢

黄舟

这两天也是被这个问题折磨了很久,各位如果有问题的不妨看看你们的config里的timestamp的类型,从后台拿到的是String需要转成数值类型.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板