根据小程序获取到的code获取微信用户的openId,
在2023-12-25 14:33分左右,通过code:0e1mtbGa161BCG0EkYGa1EkhV82mtbGl,得到了一个OpenId:ohhbO5V-_RhNn2pFvCleqi0d0wGo
在当天16:49 左右,通过code:0d1CmW0w3e3sX13JmK0w3gL1eO3CmW09,同样也得到了上面的OpenId
但是这应该是分别两个不同的人进行发起的,不应该得到同一个OpenId才对,我查看了一下两个发起者的信息,分别属于不同的UA与IP地址(因为code 是微信提供的我无法确定发起者的微信真实身份,但是按照我们的逻辑与应用场景来说,肯定是两个不同的人)
这是一个偶发性的,概率很低,请管理员进行核实一下,是否存在上面描述的问题,感谢!
appId:wx00a6d2bbd6cf9160
解决了,各位。
先说结论:确实是自身代码的问题,并非微信的问题(最开始工程中使用的一个通用的工具类中使用静态变量,因为静态的变量只有一份,是共用的,并且在使用中又对其进行了修改!!! 并发上来的时候都不知道谁拿到的谁的了,服了这个写代码的老六了)
帖子里都是说个人代码问题啥的,没用,需要的是解决问题的思路,而不是谁对错的问题
解决思路:
之前最大的疑问点是不知道微信颁发的这个code是谁的,到底应该得到哪个openId。后来找到可以通过微信提供的(wx.getRealtimeLogManager)实时日志功能,把你想打印的日志推送到微信中,这个微信实时日志最大的好处是你可以只打印你的报文,他是知道这个报文是通过哪个openId上来的,这样我们就能确定某个code到底属于谁,然后根据code 在去查微信得到的openId对不对应(应该都是对的上的,那就借助这个日志打印工具看看自己在哪里出现的问题,慢慢缩小范围,定位问题)
微信日志分析入口
https://wedata.weixin.qq.com/mp2/login
排查问题的示例图
code的有效期才5分钟,且同一个用户每次获取的code都不同,不可能同一个用户会出现同一个openid,检查你自己的代码
应该不会出现不同的用户获取到同一个openid的情况,不然微信这么多业务都会有问题的。
1、同一个用户每次获取到code,本来就会不一致;
2、通过UA和ip不同,也不能排除是同一个用户操作的;