微信分享wx.config配置时遇到invalid signature错误的解决办法

遇到微信分享wx.config时出现invalid signature错误,解决办法包括:参照官方文档的常见错误检查步骤,设置IP和域名白名单,确保域名下txt文件可访问。在Vue组件中正确引用wechart.js。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每次解决完问题,都想回到过去糊自己一巴掌。。。
官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62
1 若JSSDK已配置仍遇到invalid signature错误,一定参考“附录5-常见错误及解决方法”部分有检查步骤可参考,一定要先看再开发!!浪费了多少大好时光,流下悔恨的泪水。。
2 具体需要:
1)设置ip白名单
需要有开发权限 管理员权限 开发>基本配置>白名单>查看 IP白名单 多个IP用回车分隔。
2) 设置域名白名单

  1. 公众号设置—功能设置—js接口安全域名
  2. 第3点的txt文件要放到域名下,保证随时可以访问。https://www.xxxx666.com/report/MP_verify_wlPRmQ9ecc76yJF5.txt在浏览器可以访问。
    在这里插入图片描述
    3)1 logo图标需要放到服务器上,随时可以访问。 2 分享的链接必须是location.href.split('#')[0],否则报错invalid signature
    vue组件中:
import wxShare from "../wechat/wechat";
setShare() {
   
  let url=location.href.split('#')[0];
  //2020年
   let imgurl="https://www.xxxx666.com/img/report/logo.png"
   const shareInfo = {
   
     title: `“奉上您的2020总结`,
     desc: `支撑平台2020年终报告活动开始啦~`,
     link: url,
     img: imgurl
   }
   this.wechatShare(shareInfo)
 },
 //带个人信息的
 setSharePer(user) {
   
   let url
     
### 微信 JS-SDK 中 `wx.config` 配置失败 `'Assignment to constant variable'` 错误分析 该错误通常发生在 JavaScript 代码中尝试重新赋值给一个由 `const` 声明的常量变量。由于 `const` 声明的变量具有不可变性,一旦初始化后无法再次修改其值[^4]。 以下是可能的原因以及解决方案: #### 1. **原因分析** 如果在调用 `wx.config` 方法前或过程中存在对某个已声明为 `const` 的变量进行了重复赋值操作,则会触发此错误。例如: ```javascript const appId = 'your-app-id'; appId = 'another-app-id'; // 这里会出现 'Assignment to constant variable.' 错误 ``` 这种情况下,开发者可能是无意间试图更改了一个原本不应该被改变的值。 #### 2. **解决方案** ##### (1) 使用 `let` 替代 `const` 对于那些需要动态更新或者可能会发生变化的数据项,可以考虑改用 `let` 来代替 `const` 定义这些变量。 ```javascript let appId = 'your-app-id'; appId = 'updated-app-id'; // 此处不会报错 console.log(appId); // 输出 updated-app-id ``` ##### (2) 检查并修正逻辑中的重写行为 仔细审查涉及 `wx.config` 参数设置的相关代码片段,确认是否有任何地方不当覆盖了应该保持固定的参数值。比如签名算法生成的结果不应随意篡改。 ##### (3) 确保传入正确无误的配置对象 确保传递给 `wx.config()` 函数的对象结构及其内部成员均符合官方文档的要求,并且所有字段都采用适当的方式定义出来而未违反 ES6 的语法规定。 ```javascript wx.config({ debug: true, appId: 'wxd9......', timestamp: TimestampValue, nonceStr: NonceStringValue, signature: SignatureValue, jsApiList: ['chooseImage'] }); ``` 以上每一步骤都需要严格遵循既定规则来构建最终提交至 WeChat API Server 上验证通过后的 JSON 数据包实例化过程。 #### 示例修复代码 下面提供一段经过调整后的示例代码供参考: ```javascript // 初始化必要的全局变量 let configData; function getConfig() { return new Promise((resolve, reject) => { $.ajax({ url: '/wechat/jsconfig', type: 'GET', success: function(response){ resolve(response); }, error:function(error){ reject(error); } }); }); } async function initWxConfig(){ try{ const data = await getConfig(); if(data && typeof data === "object"){ configData = {...data}; // 将获取到的数据安全复制一份 wx.config({ ...configData , jsApiList :['scanQRCode'] }); wx.ready(function () { console.log('WeChat JSSDK Ready'); }); wx.error(function(res){ console.warn(`WeChat JSSDK Error:${JSON.stringify(res)}`); }); }else{ throw new Error("Invalid response from server"); } }catch(err){ console.error(err.message); } } initWxConfig(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值