前言
在之前的技术博客中,我们介绍了利用SSE协议实现技术社区公众号扫码登录的方案。然而,这个方案的设计中有一点并没有特别标注出来,即将微信公众号登录拆分为两个接口的原因和背景。现在,我们将对这个方面进行完善,以更好地理解这个设计决策的动机。
背景
最初的微信公众号登录流程相对繁琐,用户需要在关注公众号后,手动输入关键字获取验证码,然后在登录页面上输入验证码完成登录。这种流程操作复杂,用户体验较差。
方案优化
为了改善用户体验,我们对登录流程进行了优化,将其拆分为两个接口:获取验证码接口和基于验证码建立半长连接的接口。
获取验证码接口
用户点击登录按钮后,前端调用获取验证码接口,后端生成一个唯一的登录标识并返回给前端。同时,后端与前端建立一个新的半长连接,并将设备与验证码之间建立映射关系。用户收到验证码后,即可进行扫码登录操作。
基于验证码建立半长连接的接口
用户使用微信扫码后,微信自动向后端发送登录验证请求,并将用户的微信信息传递给后端。后端根据用户的微信信息进行验证,并生成登录凭证。然后,后端将登录凭证通过之前建立的半长连接发送给前端,实现自动登录跳转。
设计原因
这种拆分为两个接口的设计决策是由于历史原因和现实项目的迭代而产生的。最初的微信公众号登录流程较为繁琐,但在实际项目中,系统架构可能已经逐渐变得复杂,对已有功能的改动需要更多时间和成本。因此,为了快速实现新的功能,我们选择了在现有架构基础上进行调整和复用,而不是进行全新的设计。
小结
通过拆分为两个接口的设计,我们成功地优化了用户登录流程,提升了用户体验。这个设计决策的动机是为了简化用户操作流程,同时保留系统中已有的功能和接口。