直接说问题,先看公众号配置
这里后端返回的nonceStr长度36位,这里我看到别人返回的一般是16位或者32位,(这里我也是有疑问的)
这里 官方说的是
- 签名用的 noncestr 和timestamp必须与 wx.config 中的 nonceStr 和timestamp相同。
- 签名用的 url 必须是调用 JS 接口页面的完整URL。
- 出于安全考虑,开发者必须在服务器端实现签名的逻辑。
但是 附录5-常见错误及解决方法 invalid signature
3.确认 url 是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'
部分,以及'?'后面的 GET 参数部分,但不包括'#'hash后面的部分。
6. 确保你获取用来签名的 url 是动态获取的,动态页面可参见实例代码中 php 的实现方式。如果是 html 的静态页面在前端通过 ajax 将url传到后台签名,前端需要用 js 获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
这俩点和上面的 第 2 点 和 附录5的第三点 又出现冲突
后端代码:
大佬们!!!
看看什么问题,急!