Java场景面试题:手机扫码登录到底是怎么实现的?

简介: 有个粉丝问到手机APP扫码登录是如何实现的,能讲讲给我讲讲吗?扫码登录的本质,其实是通过已经登录的APP,扫描Web页面生成的二维码, 获取到一个Token作为登录凭证,然后再写入到Web端的登录认证程序。Token写入成功以后,会回调刷新Web页面跳转到登录成功的界面。

有个粉丝问到手机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写入到登录认证程序,从而完成整个扫码授权的过程。


这个执行过程大概理解了,但是理解起来还是比较抽象,我整理了一张更加形象的流程图帮助大家更好地理解,也欢迎大家在评论区讨论。


bffd88cc34ca40ebaf21001503e7b173.png

相关文章
|
2天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
23天前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
60 1
Java面试题之Java集合面试题 50道(带答案)
|
11天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
29 5
|
9天前
|
缓存 监控 Java
Java 线程池在高并发场景下有哪些优势和潜在问题?
Java 线程池在高并发场景下有哪些优势和潜在问题?
|
10天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
14 1
|
12天前
|
Java 数据处理
|
19天前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
22 3
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
349 37
|
23天前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
15 1
|
22天前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
59 0
Java面试题之cpu占用率100%,进行定位和解决