有个粉丝问到手机APP扫码登录是如何实现的,能讲讲给我讲讲吗?
扫码登录的本质,其实是通过已经登录的APP,扫描Web页面生成的二维码, 获取到一个Token作为登录凭证,然后再写入到Web端的登录认证程序。Token写入成功以后,会回调刷新Web页面跳转到登录成功的界面。
那自动登录的详细步骤以及它的实现原理是怎样的呢?我想大致可以分为下面的几个步骤。
第1步,是在网页端打开登录页面,显示一个登录二维码,在这个二维码上会携带一个由服务端生成的ID,这个二维码其实就是一个链接,扫描之后就会通知服务端更新这个二维码的扫码状态,并且Web页面还会写一个定时器轮询这个二维码的状态。如果超过一定时间没有扫码的话,就会提示失效要重新生成登录二维码。
第2步,就需要我们拿APP扫描这个二维码,把APP的Token信息和二维码的ID发送到服务端,服务端收到请求后,会更新二维码的状态,并且生成一个临时的Token。
第3步,这个时候,Web端就会提示二维码状态更新为已扫码,待确认。 同时,APP端扫码之后,会提示确认授权的操作。
第4步,在APP端确认同意登录以后,就会将临时携带的Token发送到服务端,服务端会再次修改这个二维码状态,并且会生成一个正式的Token放在服务端缓存中。
最后,第5步,Web端通过轮询,获取的二维码的状态变化,并拿到Token写入到登录认证程序,从而完成整个扫码授权的过程。
这个执行过程大概理解了,但是理解起来还是比较抽象,我整理了一张更加形象的流程图帮助大家更好地理解,也欢迎大家在评论区讨论。