这个问题是由于微信获取URL进行签名验证的时候,URL不是最新的。对于SPA应用来说,URL会变,但微信用于签名验证的URL始终是第一次打开SPA的地址。 搞清楚问题原因,就好解决了。 就是SPA需要在初始化的时候,把URL记下来,用于生成签名。
出现 realAuthUrl errMsg:config:invalid signature ?[图片] 已确保: 1.签名算法正确,已经过微信工具进行校验 2.前后端用于config的所有参数均一致,没有任何差异 3.access_token和jsapi_ticket均已进行7200秒缓存,失效后自动重新获取并缓存 4.公众号已配置js安全域名(https://applet.chinaant.net),并已配置该域名和后台所在服务器的公网IP白名单 目前怀疑原因: url不正确,但不知道为什么不正确,已参照网上说的方案,前端处理url后进行传递,但仍会出现报错 created() { const script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"; document.body.appendChild(script); let url = location.href.split("#")[0]; this.$message.toast(url); setTimeout(async () => { let data = await this.$http.quitRequest(this.$app.h5Server + "/jsapi/configJsSdk", {url: encodeURIComponent(url)}); let config = data.list[0]; console.log(config) wx.config({ debug: true, appId: config.appId, // 必填,公众号的唯一标识 timestamp: config.timestamp, // 必填,生成签名的时间戳 nonceStr: config.nonceStr, // 必填,生成签名的随机串 signature: config.signature,// 必填,签名 jsApiList: ["openLocation"], // 必填,需要使用的JS接口列表 openTagList: ["wx-open-launch-weapp"] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app'] }); wx.ready(() => { }); wx.error((res) => { console.log(res) }); }, 100); }
2023-05-08