解决微信网页授权,出现"errcode":40163,"errmsg":"codebeenused,看似微信访问了2次这个回调接口的问题

本文详细解析了微信网页授权过程中遇到40163错误的原因及解决思路,阐述了微信客户端如何处理服务器错误并重新请求,以及在实际应用中可能引发此错误的具体场景。

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

先说说自己理解的微信机制:

微信内访问自己服务器的页面,如果访问出错,微信就会认为是微信自身的问题,那么他就会开启另外一个IP来访问这个页面(什么上海的IP,深圳的IP不等),再把访问结果发回用户端,但是如果另外来的那个IP访问也出错,就会返回到一个微信自己定义的404页面(什么找人信息之类的)


如果我们本身服务器页面也出错了,那么随便怎么访问都是出错的。。。那么问题来了,如果这个服务器出错的访问是用在微信网页授权上面呢?

首先看下流程:

微信内调用网页授权,首先是服务器发起访问一个微信网页授权的地址,带上回调地址。这个发起访问一般都没问题,按照那个文档来就可以,然后微信会主动访问你那个自己服务器的回调地址,并且带上一个参数code,然后自己的服务器接收到这个参数后,就把这个参数组装加密什么的,再去访问相关地址获取access_token,最终获取到用户信息,获取用户信息后,服务器还必须 反一个页面给用户,

那么在接到code到最终反一个页面给用户的过程中,如果本身程序就有错误,特别是在使用了这个code过后的出错,服务器反会错误了,那么这个时候,微信会根据最上面的原理,再次开启另外一个IP来访问,并且同样带和上次一样的code参数。这样你服务器又会去根据这个code参数去完成同样一次申请,这个时候,你表面上看起,就是报40163错误。说code被用了,但实际上是因为微信被迫开启另外一个ip来访问你的。。


那么我测试,只要是正常流程,微信只会访问一次你的回调接口。。。


这篇文章的问题 是出在我用API发红包的时候,在微信的回调里面,获取用户OPENID后,就去执行发红包的post了,结果这个里面出错(本地调试正常,部署到服务器里面就出错了。。。哎。。。。),然后日志里面就显示"errcode":40163,"errmsg":"codebeenused。。实际上本身就是我自己程序的问题。。


### 小程序音频播放错误解决方案 在处理 `INNERERRCODE:-11850` 和 `errCode: 10002` 的情况下,通常意味着存在网络请求失败或者是资源路径配置不正确等问题。为了有效解决问题并确保音频能够正常播放,在设置音频源时应确认文件路径的有效性和合法性。 对于 UniApp 开发环境下的微信小程序而言,当尝试通过 JavaScript API 来控制音频播放器实例(如 `innerAudioContext`),如果遇到上述提到的操作已停止以及找不到参数的提示,则可以考虑如下调整方法: - **验证资源链接有效性**:确保所提供的音频 URL 是可访问的状态,并且服务器端支持跨域资源共享(CORS)[^1]。 - **初始化音频上下文对象前检查权限状态**:部分设备可能因为缺少必要的麦克风/媒体录制授权而导致操作受限;因此建议先调用相应接口获取当前应用所拥有的权限列表再做进一步动作。 ```javascript // 初始化音频组件之前检测是否有足够的权限 uni.getSetting({ success(res) { console.log('Current permission status:', res.authSetting); // 如果没有获得录音权限则引导用户开启 if (!res.authSetting['scope.record']) { uni.authorize({ scope: 'scope.record', success() { /* 成功后的回调 */ }, fail(err) { console.error('Failed to get authorization', err); } }); } const innerAudioContext = uni.createInnerAudioContext(); innerAudioContext.src = audioSrc; innerAudioContext.play(); // 添加事件监听以便更好地调试问题所在 innerAudioContext.onError((res) => { console.warn(`Error occurred during playback ${JSON.stringify(res)}`); }); innerAudioContext.onCanplay(() => { console.info('The resource is ready and can be played.'); }); } }); ``` 此外,考虑到不同版本的小程序 SDK 可能会对某些功能的支持有所差异,更新至最新稳定版也可能有助于规避潜在兼容性隐患。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值