wx.request 请求接口应该是有请求失败自动重试机制(但是居然没有可以关闭重试机制的开关参数),当用户在执行登录 wx.login 的瞬间,用户手机网络发生切换(比如:上班途中是4G网络,进入办公室后,自动连接并切换到公司WIFI网络),此时 wx.request 检测到网络切换,就会把尚未完成的请求丢弃掉,然后自动发起一个重试请求,不过这个重试机制使用的是与第一个请求完全相同的请求参数,而微信登录 wx.login 要求请求参数code只能使用一次,第一次HTTP请求中服务端已经将code使用了,所以会导致第二次HTTP请求因使用了相同的code而导致请求失败,并报错:code been used!
这种情况,wx.request 能不能提供一个可以关闭自动重试的开关,由游戏客户端自动实现重试机制,以便重试时可以使用新 code 请求参数发起重试请求。
现在游戏客户端当然也是可以再加一层重试机制确保游戏登录成功, 但是 wx.request 的自动重试机制会在网络切换时导致不必要的HTTP请求!
不知道我的理解是否正确,如果我的理解没问题的话,还请官方大大能否提供 wx.request 自动重试机制的关闭开关。
https://developers.weixin.qq.com/minigame/dev/api/network/request/wx.request.html
wx.request 没有自动重试的机制,可以自查看看
而且我自己尝试了直接用微信原生wx.request调用一个自己写的测试API(API的逻辑仅仅只是sleep() 30秒,模拟一个耗时请求),然后在客户端多次快速切换4G与wifi网络,每次切换网络都调用一次测试API接口,从我的服务器nginx请求日志中可以看到,确实是调用了多次API。
2.你可以重现一下切换网络多次收到调用 API 的情况,并在每次请求参数中带上时间戳参数便于区分,然后上传一下客户端日志,附上你们服务端收到的日志给我们查查
3.上传客户端日志方法,在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,需要提供一下微信号,时间点
【微信客户端日志】
上传日志的微信号:JL-000o
上传日志的时间点:2024/06/17 12:34
【游戏服务端日志】
如截图所示
报40163 就重新wx.login把
自己写代码处理