快捷搜索:

微信公众号中的JSSDK接入及invalid signature等常见错

微信公众号中的JSSDK接入及invalidsignature等常见错误问题分析(全面解析)

  生产号绑定方法:登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

  1、每个需要使用jssdk的页面都要使用config接口注入配置信息,wx.config调用方法如下:

  jsapi_ticket是公众号用于调用js接口的临时票据。有效期7200秒,跟公众号普通access_token一样,必须全局缓存起来,因为这个ticket获取次数有限,超过次数将无法使用。建议设置缓存时间为7198秒,因为当请求微信端生成jsapi_ticket返回给后台保存这个动作需要时间ASP编程,如果设置7200秒,实际上最后一两秒时,缓存里面还存在,但实际在微信那边已经过期了,再拿这个ticket会出错。生成jsapi_ticket如下:

  2、对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序,sort()即可)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串(string)。

  1、前端wx.config配置中的nonceStr字段名称的s是大写。但是后台生成签名的noncestr字段的‘s是小写,千万要注意,博主在这里浪费了不少时间。囧囧

  3、生成签名的url(使用jssdk的页面地址,这个页面地址可以在浏览器访问),包含“?”号后面的所有参数,不包含“#”号后面的值。

  如果是静默授权或者授权页面同意授权后跳转到的页面,页面路径会添加两个参数:code和state。

  那么生成签名的url必须为授权后跳转页面的完整路径。前端获取这个路径:location.href.split(#)[0]

  注意注意:这里有个大坑。。如果前端使用ajax(使用jquery)获取wx.config配置所需的几个参数的值,可以这样做:

  后台要怎么操作前端传过来的query值呢?大家肯定一眼看出来 获取query中的fullUrl字段不就行了。

  首先在后台将获取access_token、jsapi_ticket、计算签名的参数字典序排序后的字符串、sha1加密后的字符串全部console.log出来。

  到微信在线接口调试把刚刚打印的计算签名的几个参数分别填好。生成。。。发现跟我的代码生成的是一样的。

  又这样过了一个多小时,无果。。。。。。博主一脸颓废的到茶水间泡了杯咖啡。。提提神。。又回到了岗位,准备从头开始跑一遍再仔细看看。

  有没有注意路径最后面的&state=STATE。当我们把这个完整路径当做查询字符串传到后台的时候,因为没有对这个路径进行encodeURIComponent.所以后台将&state=STATE单独看成了一个查询字符串参数,问题点在这里。。

  wx.config配置完成后会执行wx.ready方法,所有接口必须要在config返回结果之后操作。config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。当前页面要使用的接口,要写入到config配置中的jsApiList中

  要么是jsapi_ticket错误,要么是签名算法问题,要么是算法的参数有问题,注意noncestr中的s是小写的。如果都是对的。那就是前端传的url有问题了。。。好好检查一下,不要像博主一样啊。。。。

  这个问题一般是没有接口权限的问题,有的接口是要认证之后才可以使用,当然,测试号不会有这个问题asp编程必读书籍

您可能还会对下面的文章感兴趣: