SpringBoot集成小程序登录、用户绑定逻辑


theme: smartblue

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

写在前面

最近公司要开发小程序端产品,提前做一些前置工作。

比如小程序的登录集成,与原有系统的用户绑定逻辑等等。

登录

官方文档!官方文档!官方文档!

重要的事情说三遍!

涉及国内产品的集成和使用,一定要去看一下官方的文档。

官方给出了一个登录流程图。

image.png

我大概是拆分成前端、后端两部来梳理的。

前端开发人员(也就是小程序)

一、通过调用wx.login方法获取到一个code值。

注意: 这里的code值不是当前微信用户的openid,而是一个中间验证码。

二、将此code值传入后端指定接口,等待返回openid等相关信息。

后端开发人员

一、开发一个获取openid的接口,供前端调用。

比如我这里是直接集成到登录接口中了。

代码经过删减,只留下相关核心代码,大家凑合着看。

java @PostMapping("/token") public ResultInfo<AuthInfo> token(@RequestParam(defaultValue = "password", required = false) String grantType, @RequestParam(required = false) String refreshToken, @RequestParam(required = false) String account, @RequestParam(required = false) String wxcode, @RequestParam(required = false) String password) { Map<String,String> map = new HashMap<>(16); map.put("account", account); map.put("password", password); map.put("wxcode", wxcode); map.put("grantType", grantType); map.put("refreshToken", refreshToken); map.put("userType", userType); //登录 / 调用微信api方法 ...... //返回信息,如果已绑定了用户,则直接生成固定token。 return toekn; }

java // 开放平台授权码 String openid = null; JsonNode jsonNode = HttpRequest.get(wx_url.replace("{jsCode}", map.get("wxcode"))) .useSlf4jLog() .execute() .asJsonNode(); // 获取开放平台授权数据 if (jsonNode != null && jsonNode.get("errcode") != null && jsonNode.get("errcode").intValue() == AUTH_SUCCESS_CODE) { switch (jsonNode.get("errcode").intValue()){ case -1: throw new ServiceException("微信系统繁忙,此时请开发者稍候再试"); case 0: openid = jsonNode.get("openid").textValue(); break; case 40029: throw new ServiceException("code无效"); case 45011: throw new ServiceException("登录过于频繁。"); case 40226: throw new ServiceException("高风险等级用户,小程序登录遭遇微信拦截"); default: break; } } else if(jsonNode != null && jsonNode.get("openid") != null) { openid = jsonNode.get("openid").textValue(); }else{ throw new ServiceException("微信登录失败!"); }

用户绑定

用户绑定逻辑就相应的简单了。

在认证的方法中,如果获取到openid已经绑定了数据库中用户,则直接返回有效token。

如果没有,则只返回openid。

前端发现token为空,或者token无法使用,则将openid和用户名、密码一同发送到后端的绑定接口中。

通过这样的逻辑,实现用户绑定的效果。

参考文档

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ijiran

一杯咖啡太贵,一块糖就可以

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值