微信公众平台开发,微信JS-SDK对接invalid signature报错解决

时间:2022-10-24 17:02:10

微信公众平台开发,微信JS-SDK对接invalid signature报错解决


简介:

2015年大约1月多微信发布JS-SDK,功能强大,当然BUG也有不少


背景说明:

一:问题背景

笔者在做微信分享页面内容功能,即微信页面右上角的分享按钮时遇到错误,流程如下点击微信公众平台菜单某按钮,进入share分享的页面,右上角分享此share页面,报错:invalid signature


二:名词说明

controller :为WEB中控制器层,每一个controller用来响应一次请求,返回一个页面,主要用于页面跳转,例如struts,springmvc 



三:invalid signature错误

没看过官方文档的请先看官方文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

在通过config接口注入权限验证配置步骤,生成签名需要的url属性错误,易导致invalid signature报错


解决方案一:

具体方法:

url填写的类型错误,如果url填写的是jsp的静态路径如:http://www.123.com/hhhh/share.jsp,需要把url修改为跳转到share.jsp页面的控制器controller路径。修改以后,一部分用户可解决此错误,如仍不能解决,请看下面方案是否适合你


解决方案二:

说明:

还有一部分用户url为controller路径仍会出错,请先确认你的分享页面跳转来源为微信公众平台的菜单,即点击微信公众平台菜单某按钮,就进入要分享的页面,此方案只适合满足该条件者。

分析流程:

点击微信公众平台菜单时,请求微信服务器,微信服务器回调controller路径,微信公众平台返回share.jsp页面到客户端并显示。

出错原因:

url值已经设置为controller的值,如http://www.123.com/hhhh/toshare

微信服务器在相应菜单点击事件时,在回调的路径上会加上一些参数如openid等,如此会把http://www.123.com/hhhh/toshare调整为另一个url,此url可以通俗理解为“已加工的url”,如此导致签名所需url和微信当前页面url不同,大家可以在share页面右上角点击复制链接,把连接粘贴出来查看,会发现其url确实和自己本地项目的controller路径不同。

解决方法:

        在后台再建立一个中转的控制器controller方法C2,在微信回调请求的controller方法C1中,调C2方法,通过C2跳转至分享页面。说白了,就是多建立一个controller中转一次跳转请求。

此时C2的controller路径为“未加工的路径”,保证页面上签名的url值和此"未加工的路径"相同即可



作者:墨菲:

日期   :2015.1.16

微信号:twilight_2046

QQ    :361918593

说明   :恭迎大神指点/ 欢迎菜鸟转载
原文:http://blog.csdn.net/boss_2012/article/details/42779481