news 2026/9/3 2:14:12

苍穹外卖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/9/2 22:25:11

Qwen3-VL-WEBUI蓝绿部署:零停机上线实战指南

Qwen3-VL-WEBUI蓝绿部署&#xff1a;零停机上线实战指南 1. 引言&#xff1a;业务场景与痛点分析 在AI模型服务化落地过程中&#xff0c;服务稳定性和用户体验连续性是核心诉求。尤其对于基于Qwen3-VL-WEBUI的视觉语言应用&#xff0c;如智能客服、自动化测试代理、多模态内容…

作者头像 李华
网站建设 2026/9/3 0:00:07

Navicat云安装体验:无需下载的快速试用方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Navicat云端试用平台原型&#xff0c;功能包括&#xff1a;1. 浏览器直接访问的轻量级Navicat界面&#xff1b;2. 预配置的测试数据库环境&#xff1b;3. 核心功能演示工作…

作者头像 李华
网站建设 2026/9/2 23:11:47

AI智能实体侦测服务日志记录功能:操作审计追踪实现教程

AI智能实体侦测服务日志记录功能&#xff1a;操作审计追踪实现教程 1. 引言 1.1 业务场景描述 在企业级AI应用中&#xff0c;命名实体识别&#xff08;NER&#xff09;服务常用于新闻分析、舆情监控、客户信息提取等关键场景。随着系统规模扩大&#xff0c;多个用户或API调用…

作者头像 李华
网站建设 2026/9/1 19:44:56

小白也能懂的COMMUNICATIONS LINK FAILURE解决指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个新手友好的错误解决向导&#xff0c;通过交互式问答方式帮助用户解决COMMUNICATIONS LINK FAILURE问题。包括&#xff1a;1. 简单错误解释&#xff1b;2. 逐步排查流程&am…

作者头像 李华
网站建设 2026/8/28 15:11:17

SQL游标(CURSOR)入门:从零开始学数据处理

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式SQL游标学习应用&#xff0c;包含&#xff1a;1. 游标基本概念图文解释 2. 可运行的简单游标示例代码&#xff08;声明、打开、获取、关闭&#xff09;3. 逐步引导的…

作者头像 李华
网站建设 2026/9/3 2:03:02

24小时搞定:用免费大模型API快速验证产品创意

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个快速原型工具&#xff0c;利用免费大模型API实现以下功能&#xff1a;1. 根据用户输入的产品描述生成MVP功能列表&#xff1b;2. 自动生成用户界面草图描述&#xff1b;3.…

作者头像 李华