问题描述
config配置权限验证时要获取接口的签名首先要根据oppid获取access_token公众号的全局唯一票据然后再根据access_token获取jsapi_ticket最后再根据jsapi_ticket获得签名但是怎么弄都提示签名错误。。。。。。。官网说:参数按照字段名的ASCII码从小到大排序确认config中noncestr,timestamp与用以签名中的对应noncestr,timestamp一致。确认url是页面完整的url,包括GET参数部分。确认config中的appid与用来获取jsapi_ticket的appid一致。我都对了1天了这些都没弄错就是一直报签名的错误。。。。。。。。。。。。。。。。。。。string1:jsapi_ticket=bxLdikRXVbTPdHSM05e5u1sgBgnhgLlAc-l-lxGl6z01X9Dz0N_ogV00_xQxFdJj-jh47ZXibMa8bysSXH_LSA&noncestr=rHk2XMkrI8P6SGQh×tamp=1421216992&url=http://active.ucandemo.net/test.aspxsignature=sha1(string1)signature:5e4caf2186c02472871fff57e4e2ad73d1e612b1
解决方案
解决方案二:
解决方案三:
我也遇到与你同样的问题,ios手机上一直报invalidsignature签名错误,也按照JSSDK文档附录6关于invalidsignature签名错误的排错指导每步都仔细排查了,还是未能解决该问题。
解决方案四:
解决了吗??????
解决方案五:
我也碰到同样的问题,还未解决。。持续关注
解决方案六:
同样的问题求支招啊
解决方案七:
也是同样的问题。生成的签名和微信签名验证工具一样的字符串怎么还不行
解决方案八:
我也遇到一样的问题,现在解决了。签名和验证工具签名一致,只能说明你签名时的url和wx校验时的url不一致,可能是参数导致的,应该在打开页面前,先对参数进行encode,同样在你签名的时候对url的参数进行encode,这样就没问题了。注意,是url的参数,不是整个url,希望可以帮到你。
解决方案九:
这是我的参数stringnoncestr="101072105102";stringjsapi_tickets=jsapi_ticket;stringtimestamp="201501270101";stringurl="http://weixin.sinotruk.com/Location/Default.aspx";signature=CheckSignature(jsapi_tickets,noncestr,timestamp,url);下面是签名的方法privatestringCheckSignature(stringjsapi_ticket,stringnoncestr,stringtimestamp,stringurl){string[]ArrTmp={jsapi_ticket,noncestr,timestamp,url};Array.Sort(ArrTmp);//字典排序stringtmpStr=string.Join("",ArrTmp);tmpStr=FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,"SHA1");tmpStr=tmpStr.ToLower();returntmpStr;}为什么签名数据跟微信不一致呢,能指点一下么引用7楼zhangt0558的回复:
我也遇到一样的问题,现在解决了。签名和验证工具签名一致,只能说明你签名时的url和wx校验时的url不一致,可能是参数导致的,应该在打开页面前,先对参数进行encode,同样在你签名的时候对url的参数进行encode,这样就没问题了。注意,是url的参数,不是整个url,希望可以帮到你。
解决方案十:
引用7楼zhangt0558的回复:
我也遇到一样的问题,现在解决了。签名和验证工具签名一致,只能说明你签名时的url和wx校验时的url不一致,可能是参数导致的,应该在打开页面前,先对参数进行encode,同样在你签名的时候对url的参数进行encode,这样就没问题了。注意,是url的参数,不是整个url,希望可以帮到你。
有的资料说,url可以用location.href.split('#')[0]方法获得,我发现这个方法获得的url会带有微信传来的参数,那么签名的时候用的url是我的原始的url还是带参数的URL呢?请大牛指点啊,搞了好久没搞懂
解决方案十一:
引用9楼feelgoodha的回复:
Quote: 引用7楼zhangt0558的回复:
我也遇到一样的问题,现在解决了。签名和验证工具签名一致,只能说明你签名时的url和wx校验时的url不一致,可能是参数导致的,应该在打开页面前,先对参数进行encode,同样在你签名的时候对url的参数进行encode,这样就没问题了。注意,是url的参数,不是整个url,希望可以帮到你。有的资料说,url可以用location.href.split('#')[0]方法获得,我发现这个方法获得的url会带有微信传来的参数,那么签名的时候用的url是我的原始的url还是带参数的URL呢?请大牛指点啊,搞了好久没搞懂
带参数的页面地址,也就是点“菜单”“复制链接”的那个地址。
解决方案十二:
引用8楼u011120525的回复:
这是我的参数stringnoncestr="101072105102";stringjsapi_tickets=jsapi_ticket;stringtimestamp="201501270101";stringurl="http://weixin.sinotruk.com/Location/Default.aspx";signature=CheckSignature(jsapi_tickets,noncestr,timestamp,url);下面是签名的方法privatestringCheckSignature(stringjsapi_ticket,stringnoncestr,stringtimestamp,stringurl){string[]ArrTmp={jsapi_ticket,noncestr,timestamp,url};Array.Sort(ArrTmp);//字典排序stringtmpStr=string.Join("",ArrTmp);tmpStr=FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,"SHA1");tmpStr=tmpStr.ToLower();returntmpStr;}为什么签名数据跟微信不一致呢,能指点一下么Quote: 引用7楼zhangt0558的回复:
我也遇到一样的问题,现在解决了。签名和验证工具签名一致,只能说明你签名时的url和wx校验时的url不一致,可能是参数导致的,应该在打开页面前,先对参数进行encode,同样在你签名的时候对url的参数进行encode,这样就没问题了。注意,是url的参数,不是整个url,希望可以帮到你。
可以参考一楼的代码。
解决方案十三:
引用10楼zhangt0558的回复:
Quote: 引用9楼feelgoodha的回复:
Quote: 引用7楼zhangt0558的回复:
我也遇到一样的问题,现在解决了。签名和验证工具签名一致,只能说明你签名时的url和wx校验时的url不一致,可能是参数导致的,应该在打开页面前,先对参数进行encode,同样在你签名的时候对url的参数进行encode,这样就没问题了。注意,是url的参数,不是整个url,希望可以帮到你。有的资料说,url可以用location.href.split('#')[0]方法获得,我发现这个方法获得的url会带有微信传来的参数,那么签名的时候用的url是我的原始的url还是带参数的URL呢?请大牛指点啊,搞了好久没搞懂
带参数的页面地址,也就是点“菜单”“复制链接”的那个地址。
那微信带来的参数&from=timeline&isappinstalled=1,这个需要encode吗?
解决方案十四:
看这里:http://www.cnblogs.com/deepleo/p/weixinjssdk.html
解决方案十五:
请访解决了么?我也遇到这个问题了,能分享一下么?这是我的问题http://bbs.csdn.net/topics/390981338谢谢了
解决方案:
估计也是url错了。。后面还有一个反斜杠的。。alert出来之后对比一下。。这个斜杠坑了我一个下午。。
解决方案:
我当时是没有填写js安全域名
解决方案:
同样的字符串http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign和http://www.sha1-online.com/加密不一样啊,是不是微信接口有bug。跪求解决方案啊。
解决方案:
13楼是正解,感谢夜の魔王,我的忽略字母大小写。
解决方案:
楼主解决了这个问题么?我也有同样的问题签名都和微信测试页面的一样,还是一直提示签名错误!不知道哪里出了问题
解决方案:
http://jingyan.baidu.com/article/59703552c3c9808fc1074072.html问题我解决了,大家可以看看我的百度经验~
解决方案:
签名错误也有可能是jsapi_ticket过期后无法获取,因为获取次数“非常有限”
解决方案:
有人解决这个问题了吗?我已经确认过了,我后台程序生成的签名和微信在线工具生成的签名是一模一样的我的后台的url和微信里复制链接的url也是一模一样的其他参数也都已经确认过了,但是就是不能通过验证
解决方案:
没有合理的答案啊,都是问题
解决方案:
我也是一样的问题,早了好久都没搞定,晕死了
解决方案:
楼主,你的问题解决了没?是什么原因啊?
解决方案:
求解啊,签名算法时候的url到底是哪里获取到的呢?。。。公众平台测试号,可以测分享功能吗?还是必须认证过的正式号
解决方案:
我的解决了,你先前端做个测试,确认跑通了,然后再让再让后台做动态的,你获取就可以,签名有效期是两小时,过期了,你的token,tiket都要重新再换一次,然后再把方法调用在ready成功里面......有问题加Q:553644700,带上备注。