zoukankan      html  css  js  c++  java
  • 怎么实现通过扫描二维码进行登录

    首先,任何一个二维码表示的都是一串字符串。

    我们打开淘宝登录页面:https://login.taobao.com/member/login.jhtml,展示了二维码:

    image.png

     

    通过草料二维码解析出这张二维码表示的是如下字符串:

    https://login.m.taobao.com/qrcodeCheck.htm?lgToken=e20115f0e33f373f6be958ca54a60b56&tbScanOpenType=Notification,

    这关键的就是lgToken,这是网页的一个唯一ID。

     

    当打开了二维码登录后,我们通过chrome控制台看网路请求,会发现:

    网页在轮询调用接口:https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.do?lgToken=9ed6cfefe97b10b808fbfff0705379b1&defaulturl=&_ksTS=1530178881213_61&callback=jsonp62,

    即拿上面二维码里的lgToken去请求服务。

    如果没有扫码,返回的是:

    image.png

    如果扫了码,但是手机上没点击“确认登录”的话,界面显示的是:

     image.png

    轮询接口返回的是:

    image.png

    如果长时间未扫码,网页端会停止轮询,并显示:

    image.png

    当手机端确认登录后,接口返回的是:

    image.png

    这里返回了一个token,应该就是登录态。

    这其中手机端与服务端做了什么交互我们不得而知,但是可以猜测到,客户端在登录态有效的情况下,拿网页端的lgToken去请求了服端,并且服务端记住了这个lgToken,并认为登录了。当网页端再次轮询请求接口时,就返回真正的登录态Token。

    最后以一张流程图总结扫码登录原理:

    image.png
    ————————————————
    版权声明:本文为CSDN博主「360linker」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/belalds/article/details/83818707

  • 相关阅读:
    团队开发冲刺第二阶段_1
    团队开发冲刺第一阶段_7
    mysql 官方集群
    Tomcat提高并发
    Percona XtraDB Cluster 5.7
    Mysql常用配置及优化
    Linux 常用命令
    数据库主从复制
    Linux 环境下Web环境搭建————ActiveMQ
    Linux 下Web环境搭建————redis
  • 原文地址:https://www.cnblogs.com/tiancai/p/15267183.html
Copyright © 2011-2022 走看看