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

相关文章
|
4月前
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
1142 0
|
4月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
7月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
410 1
|
6月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
529 0
|
6月前
|
SQL 缓存 Java
MyBatis场景面试题
MyBatis与MyBatisPlus均属ORM框架,前者擅长复杂SQL及动态查询,后者封装API简化单表操作。常用XML标签如if、foreach提升SQL灵活性。MyBatis支持一级(SqlSession级)与二级(NameSpace级)缓存,提升查询效率。#{}防SQL注入,${}用于动态表名等场景。
333 62
|
4月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
587 1
|
6月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
310 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
4月前
|
算法 Java
50道java基础面试题
50道java基础面试题