【app扫码登录】Java app扫码登录功能实现

本文介绍了Java App扫码登录的实现原理,包括PC端接口的详细步骤:二维码状态查询、二维码获取、扫描处理、确认登录及PC端的轮询机制。通过服务端验证和状态管理,确保了扫码登录的安全与效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实现原理

  1. PC 端发送 “扫码登录” 请求,服务端生成二维码 uuid,并存储二维码的过期时间、状态等信息。
  2. PC 端获取二维码并显示。
  3. PC 端开始轮询检查二维码的状态(2s一次),二维码最初为 “待扫描” 状态。
  4. 手机端扫描二维码,获取二维码 uuid。
  5. 手机端向服务端发送 “扫码” 请求,请求中携带二维码 uuid、手机端 access_token。
  6. 服务端验证手机端用户的合法性,验证通过后将二维码状态置为 “待确认”,并将用户信息与二维码关联在一起。
  7. PC 端轮询时检测到二维码状态为 “待确认”。
  8. 手机端向服务端发送 “确认登录” 请求,请求中携带着二维码 uuid、 access_token。
  9. 服务端验证 access_token和uuid绑定的access_token是否一致,验证通过后将二维码状态置为 “已确认”。
  10. PC 端轮询时检测到二维码状态为 “已确认”,并获取到了 PC 端 access_token,之后 PC 端不再轮询。
  11. PC 端通过 PC 端 access_token 访问服务端。

 二、PC端接口

1.二维码状态

public enum QrCodeStatusEnum {

    WAITING(10000,"待扫描"),
    SCANNED(20000,"待确认"),
    CONFIRMED(30000,"已确认"),
    INVALID(40000,"二维码无效"),
    CANCEL(50000,"已取消");

    private Integer statusCode;
    private String statusValue;

    QrCodeStatusEnum(Integer statusCode, String statusValue) {
        this.statusCode = statusCode;
        this.statusValue = statusValue;
    }

    public Integer getStatusCode() {
        return statusCode;
    }

    public String getStatusValue() {
        return statusValue;
    }

2.获取二维码

public CommonResult createQrImg() {
        Map<Object, Object> resultMap = new HashMap<>();
        // uuid
        String uuid = UUID.randomUUID().toString();
        LoginTicket loginTicket = new LoginTicket();
        // 二维码最
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值