旧版解析 code 网络请求
uni.request({
url: url,
method: "GET",
data: {code:this.code},
header: header,
success: (res) => {
callback(res);
},
fail: (err) => {
console.log( err);
},
});约 669 字大约 2 分钟
2025-12-01
同事换了后端接口和传参方式,传递的参数由 data :{code:this.code} 换成了 data:code
我换了接口后,在微信开发者工具和手机预览后均没有问题,所以上传了版本。但新版本一上线,就有客户打电话说电脑版微信小程序看不到设备了`。
我们的产品逻辑是:
正常情况下,把 wx.login 得到的 code 用网络请求发送给服务器,服务器就会返回解析得到的用户 uid ,但是 pc 端小程序返回的 uid 是 undefined

因为每次重启小程序都会获取一个新的 code ,且每个 code 只能使用一次,解析后就失效,为了判断是后端问题还是 pc 小程序问题,我在阻止了小程序的后续解析 code 请求。
然后把 code 直接在浏览器的测试接口中调用(类似 postman 中发送网络请求),却发现返回的信息是错误的code值。
换了很多次 code 都提示一样的报错。
更奇怪的是同样的代码在微信开发者工具中模拟、真机上都没有问题,甚至手机型号也换了好几个都正常。
最后发现在浏览器发送的网络请求传递的参数 data 两端会自动加上引号 ""
比如 code 值是 0e3T070w3qne363Dbs2w3rvUWU0T070r ,但发送的是 "0e3T070w3qne363Dbs2w3rvUWU0T070r" 两端多了双引号,服务器自然解析不出来正确的 uid
而原来的传参方式 data:{code:this.code} 不会存在这种情况,服务器能得到正确的 code ,也就能返回正确的 uid
旧版解析 code 网络请求
uni.request({
url: url,
method: "GET",
data: {code:this.code},
header: header,
success: (res) => {
callback(res);
},
fail: (err) => {
console.log( err);
},
});新版解析 code 网络请求
uni.request({
url: url,
method: "GET",
data: data,
header: header,
success: (res) => {
callback(res);
},
fail: (err) => {
console.log( err);
},
});联想到 pc 端小程序也报错,我询问了 ai ,得到结论如下:

也就是说 pc 小程序 是套壳浏览器,所以出现了和浏览器发送网络请求一样的错误。
解决办法是:后端处理接收的参数,过滤掉空格。