invalid signature为签名错误
前提:严格按照官网提供的生成签名的方法进行签名。
但我在这要分享的问题是这样的:我们获取js-sdk配置信息是通过一个单独的Ajax请求得到的,请求的参数是当前页面的URL地址,传递到后台生成签名,把返回的信息作为参数传递给(wx.config)。
问题1:在传递参数的过程中,如果当前页面的URL地址中包含有参数,那么把这完整的URL地址作为参数放到Ajax中的时候,就会丢失部分参数,所以就会出现签名失败
解决的方案是:传递URL地址的时候需要对地址进行编码(encodeURIComponent),传递到后台后再进行解码(URLDecoder.decode(url, "UTF-8"))。
问题2:如果URL地址中的参数含有空格的话,浏览器地址栏中会把空格显示成加号(+),但是我们在获取URL并传递后台的时候却依然是空格
解决的方案是:后台把参数中的空格做一个替换(url.replace(' ', '+'))。
至此,可以解决我们项目中遇到的签名失败的问题。