news 2026/4/3 2:45:29

苍穹外卖day6微信登录报错500且openid=null(已解决)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
苍穹外卖day6微信登录报错500且openid=null(已解决)

微信登录功能开发过程中的Bug解决日志

在进行微信用户登录这一功能的开发时,我被一个bug卡了好久:使用Postman向微信接口服务发送GET请求获取openid是成功的,但在Java程序中却失败,报错:

{"errcode":40002,"errmsg":"invalid grant_type, rid: 69613ee1-1363e562-5faeede8"}

经过仔细排查和Gemini的协助,发现UserServiceImpl中新用户自动完成注册部分的代码存在bug。
原代码如下:

@Service@Slf4jpublicclassUserServiceImplimplementsUserService{// 微信接口服务地址publicstaticfinalStringWX_LOGIN="https://api.weixin.qq.com/sns/jscode2session";@AutowiredprivateWeChatPropertiesweChatProperties;@AutowiredprivateUserMapperuserMapper;// 微信用户登录@OverridepublicUserwxLogin(UserLoginDTOuserLoginDTO){// 1.调用微信接口服务,获取当前微信用户的openidMap<String,String>map=newHashMap<>();map.put("appid",weChatProperties.getAppid());map.put("secret",weChatProperties.getSecret());map.put("js_code",userLoginDTO.getCode());map.put("grant_type","authorization_code");Stringjson=HttpClientUtil.doGet(WX_LOGIN,map);JSONObjectjsonObject=JSON.parseObject(json);Stringopenid=jsonObject.getString("openid");// 2.判断openid是否为空,如果为空,说明登录失败,抛出业务异常if(openid==null){thrownewLoginFailedException(MessageConstant.LOGIN_FAILED);}// 3.根据openid去user表中查询是否存在对应用户,从而判断当前用户是否为苍穹外卖的新用户LambdaQueryWrapper<User>lqw=newLambdaQueryWrapper<>();lqw.eq(User::getOpenid,openid);Useruser=userMapper.selectOne(lqw);if(user==null){// 4.如果是新用户,自动完成注册user.setOpenid(openid);user.setCreateTime(LocalDateTime.now());userMapper.save(user);}returnuser;}}

可以发现,在if(user==null){…}内部,我忘记先new一个User出来,导致user仍为数据库查出的结果也就是null,这时候调用setOpenid必然失败,因为不能给null对象赋值!

修改如下:

if(user==null){// 4.如果是新用户,自动完成注册//Caution: 必须先new一个User出来,否则user仍为null,调用setter会报错!user=newUser();user.setOpenid(openid);user.setCreateTime(LocalDateTime.now());userMapper.save(user);}

修改后就返回200 OK了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 15:14:58

Qwen3-VL API开发:REST接口封装实战

Qwen3-VL API开发&#xff1a;REST接口封装实战 1. 背景与业务场景 随着多模态大模型的快速发展&#xff0c;视觉-语言理解能力已成为AI应用的核心竞争力之一。Qwen3-VL作为阿里云推出的最新一代视觉语言模型&#xff0c;在文本生成、图像理解、视频分析和GUI代理交互等方面实…

作者头像 李华
网站建设 2026/3/29 3:35:09

AI如何帮你快速设计PMOS开关电路?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请设计一个PMOS开关电路&#xff0c;用于控制12V电源的通断。要求&#xff1a;1. 输入控制信号为3.3V TTL电平&#xff1b;2. 最大负载电流1A&#xff1b;3. 包含原理图、PCB布局建…

作者头像 李华
网站建设 2026/3/25 0:33:39

TensorBoard在工业缺陷检测中的可视化应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于TensorFlow的工业缺陷检测系统。使用TensorBoard实现以下功能&#xff1a;1) 训练集/验证集样本可视化&#xff1b;2) 混淆矩阵和PR曲线分析&#xff1b;3) Grad-CAM热…

作者头像 李华
网站建设 2026/4/1 3:20:34

AI助力MOBAXTERM汉化:一键生成中文界面方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个MOBAXTERM汉化辅助工具&#xff0c;能够自动分析软件界面元素&#xff0c;提取需要翻译的英文文本&#xff0c;调用AI翻译API生成中文翻译&#xff0c;并自动替换原始资源…

作者头像 李华
网站建设 2026/3/15 14:01:16

航班设置暂停天数的实际应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个航班管理系统的案例展示页面&#xff0c;包含航班设置暂停天数的实际应用场景&#xff0c;如航班延误、天气影响、节假日调整等。页面应包含数据图表、案例描述和解决方案…

作者头像 李华
网站建设 2026/4/2 2:28:34

AI如何帮你解决STEP7 BASIC许可证问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个AI辅助工具&#xff0c;用于自动检测STEP7 BASIC许可证问题。功能包括&#xff1a;1. 扫描系统查找许可证文件&#xff1b;2. 分析许可证错误原因&#xff1b;3. 提供一键…

作者头像 李华