关于微信公众号开发 config:invalid signature 错误的解决方法
- 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
- 确认 config 中 nonceStr(js 中驼峰标准大写 S), timestamp 与用以签名中的对应 noncestr, timestamp 一致。
- 确认 url 是页面完整的 url(请在当前页面 alert(location.href.split(‘#’)[0])确认),包括’http(s)://‘部分,以及’?’后面的 GET 参数部分,但不包括’#’hash 后面的部分。
- 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
- 确保一定缓存 access_token 和 jsapi_ticket。
- html 的静态页面在前端通过 ajax 将 url 传到后台签名,前端需要用 js 获取当前页面除去’#’hash 部分的链接(可用 location.href.split(‘#’)[0]获取,而且需要 encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
步骤:
- 首先你在页面 alert(location.href.split(‘#’)[0]);
- 然后你再打印出动态获取的 url 是否和你 alert 的地址是否一样。一定要一模一样,包括大小写。
如果发现不一样,那就按照自己的需求改。反正要一样。验证签名一定可以通过的。