invalidvisa signaturee,该怎么办

2766人阅读
微信公众平台
微信公众平台开发,微信JS-SDK对接invalid signature报错解决
2015年大约1月多微信发布JS-SDK,功能强大,当然BUG也有不少
背景说明:
一:问题背景
笔者在做微信分享页面内容功能,即微信页面右上角的分享按钮时遇到错误,流程如下点击微信公众平台菜单某按钮,进入share分享的页面,右上角分享此share页面,报错:invalid signature
二:名词说明
controller :为WEB中控制器层,每一个controller用来响应一次请求,返回一个页面,主要用于页面跳转,例如struts,springmvc&
三:invalid signature错误
没看过官方文档的请先看官方文档&http://mp./wiki/7/aaa137b55fb2e48dd613f.html
在通过config接口注入权限验证配置步骤,生成签名需要的url属性错误,易导致invalid signature报错
解决方案一:
具体方法:
url填写的类型错误,如果url填写的是jsp的静态路径如:/hhhh/share.jsp,需要把url修改为跳转到share.jsp页面的控制器controller路径。修改以后,一部分用户可解决此错误,如仍不能解决,请看下面方案是否适合你
解决方案二:
还有一部分用户url为controller路径仍会出错,请先确认你的分享页面跳转来源为微信公众平台的菜单,即点击微信公众平台菜单某按钮,就进入要分享的页面,此方案只适合满足该条件者。
分析流程:
点击微信公众平台菜单时,请求微信服务器,微信服务器回调controller路径,微信公众平台返回share.jsp页面到客户端并显示。
出错原因:
url值已经设置为controller的值,如/hhhh/toshare
微信服务器在相应菜单点击事件时,在回调的路径上会加上一些参数如openid等,如此会把/hhhh/toshare调整为另一个url,此url可以通俗理解为“已加工的url”,如此导致签名所需url和微信当前页面url不同,大家可以在share页面右上角点击复制链接,把连接粘贴出来查看,会发现其url确实和自己本地项目的controller路径不同。
解决方法:
在后台再建立一个中转的控制器controller方法C2,在微信回调请求的controller方法C1中,调C2方法,通过C2跳转至分享页面。说白了,就是多建立一个controller中转一次跳转请求。
此时C2的controller路径为“未加工的路径”,保证页面上签名的url值和此&未加工的路径&相同即可
作者:墨菲:
微信号:twilight_2046
说明 & :恭迎大神指点/欢迎菜鸟转载
原文:http://blog.csdn.net/boss_2012/article/details/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4755次
排名:千里之外『LUMIA』★has invalid signature.国行刷港版出现这个怎么办_lumia930吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:108,172贴子:
『LUMIA』★has invalid signature.国行刷港版出现这个怎么办收藏
CGWANG原画培训 「零基础全额退费保障」,原画名企委托培训,高薪工作不是梦
_RMJ5_._037.vpl has invalid signature.
都是运营商惹的祸,不更新
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或微信内网页开发工具包(微信JS...
我网上找了个源码,修改了下,但是报config:invalid signature错误,源码链接:
密码: w6dc & &源码参考index.html里面标红部分是不是写法有错误,我估计也就这块
你的配置内容中 timestamp,nonceStr,signature都没填写啊
timestamp可以用js获取,也可以php指定
你看下官网文档
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
下面是signature的获取方法
jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bfe95bc627.html
用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api./cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN &type=jsapi
成功返回如下JSON:
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1 &key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
即signature=sha1(string1)。 示例:
noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
url=http://mp.?params=value
步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1 &key2=value2…)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg &noncestr=Wm3WZYTPz0wzccnW &timestamp= &url=http://mp.?params=value
步骤2. 对string1进行sha1签名,得到signature:
0f9de62fce790f9a083d5c99e95740ceb90c27ed
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
如出现invalid signature 等错误详见附录5常见错误及解决办法。
整个回复参考文档http://mp./wiki/7/aaa137b55fb2e48dd613f.html
你可以查看下,如果后面改过后还有问题,欢迎提问
你的配置内容中 timestamp,nonceStr,signature都没填写啊???填写的呀,我是在js/wx.然后直接调用的函数呀
微信内网页开发工具包(微信JS...
服务热线:400-678-8266

我要回帖

更多关于 invalid signature 的文章

 

随机推荐