内容如题:解决微信jdk invalid signature 签名非法的问题balabala~~~
今日作者在解决一个微信公众号网页上传图片的问题
百般调试后还是调用不了微信上传文件的 wx.chooseImage({})方法。
偶然在度娘看到decodeURIComponent()这个方法,恍悟是不是自己的域名链接传递时被编码了
于是乎直接简单粗暴alert出来。
果不其然,url中特殊符号均被encode编码
解决方法很简单:
decodeURIComponent(document.URL.split(‘#’)[0])
附上vue代码:
// 获取微信配置
this.$http.post('/jsConfig/getConfig', Qs.stringify({url: url})).then(response => {
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: response.data.data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
timestamp: response.data.data.timestamp, // 必填,生成签名的时间戳
nonceStr: response.data.data.nonceStr, // 必填,生成签名的随机串
signature: response.data.data.signature, // 必填,签名,见附录1
jsApiList: response.data.data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
})
wx.ready(function () {
})
wx.error(function (res) {
})
})
最后解决调用微信jssdk报错的问题
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
self.$vux.loading.show({
text: '图片上传中'
})
})
前端技术锦集:个人博客 (vue,jquery,建站教程) ,才疏学浅,不到之处还请指正。
【更新】
回答了一下别人的问题,还有人遇到invalid signature 时是因为access token 过期的问题,补充息知。