websocket扫码登录
二维码由web端生成,解析结果
https://www.qycloud.com.cn/home/welcome?{"type":"login","data":{"uuid":"msdvgn30rs3w","public_key":"w3ce4"}}
https://www.qycloud.com.cn/home/welcome?{"type":"login","data":{"uuid":"76u3tgxy9in2","public_key":"ww00ev"}}
时序图

API调用流
1. 扫码(移动端发起) GET /api2/user/scanlogin/changestatus
2. 确认登录(移动端发起) GET /api2/user/scanlogin
3. 登录(web端发起) POST /api2/user/scanlogin/oauthLogin
API调用详细日志
{
"5de61d4619327434d99dffda": {
"_id": {
"$id": "5de61d4619327434d99dffda"
},
"req_time": 1575361862,
"api_path": "/api2/user/scanlogin/changestatus",
"req_method": "GET",
"req_uri": "/api2/user/scanlogin/changestatus?uuid=j9ahyf_fxec5to0p8id",
"user_id": "363827171@qq.com",
"ent_id": "nanjinganyuankeji",
"resp_status": 1351,
"resp_msg": "验证成功",
"req_id": "0ed58705-0cf0-4575-980d-4d3e871f5948",
"client_ip": "49.94.158.59",
"client_type": "ios",
"ua": "APP|iOS|QYCloud|8.2.0|BBBE8B79-C6D6-4534-A926-53D036F71E4D|iPhone9,1|iOS|11.4.1",
"scheme": "http",
"host": "www.qycloud.com.cn",
"server_ip": "10.45.54.245",
"resp_time": 1575361862,
"consume_time": 38,
"content_size": 65
},
"5de61d4e19327434d99e0063": {
"_id": {
"$id": "5de61d4e19327434d99e0063"
},
"req_time": 1575361870,
"api_path": "/api2/user/scanlogin",
"req_method": "GET",
"req_uri": "/api2/user/scanlogin?uuid=j9ahyf_fxec5to0p8id&user_id=363827171@qq.com",
"user_id": "363827171@qq.com",
"ent_id": "nanjinganyuankeji",
"resp_status": 1352,
"resp_msg": "登录成功!",
"req_id": "98ef5303-8e37-4252-85e8-439a0d66551d",
"client_ip": "49.94.158.59",
"client_type": "ios",
"ua": "APP|iOS|QYCloud|8.2.0|BBBE8B79-C6D6-4534-A926-53D036F71E4D|iPhone9,1|iOS|11.4.1",
"scheme": "http",
"host": "www.qycloud.com.cn",
"server_ip": "10.45.54.245",
"resp_time": 1575361870,
"consume_time": 38,
"content_size": 59
},
"5de61d4e19327434d99e0068": {
"_id": {
"$id": "5de61d4e19327434d99e0068"
},
"req_time": 1575361870,
"api_path": "/api2/user/scanlogin/oauthLogin",
"req_method": "POST",
"req_uri": "/api2/user/scanlogin/oauthLogin",
"user_id": "363827171@qq.com",
"ent_id": "YunPingTaiYanFaBu",
"resp_status": 1200,
"resp_msg": "登录成功!",
"req_id": "f4fde9d1-1794-4d56-9428-228e51cd800e",
"client_ip": "221.226.186.58",
"client_type": "web",
"ua": "Mozilla/5.0 (X11; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0",
"scheme": "http",
"host": "www.qycloud.com.cn",
"server_ip": "10.45.54.245",
"resp_time": 1575361870,
"consume_time": 127,
"content_size": 54
}
}
WebSocket抓包

http://jira.qpaas.com:8766/pages/viewpage.action?pageId=28443234
websocket扫码登录的更多相关文章
- 初涉扫码登录:edusoho实现客户端扫码登录(简版)
一.项目简介及需求 edusoho是一套商业版的在线教育平台,项目本身基于symfony2框架开发,现在有一款自己的APP,要求在不多修改edusoho自身代码的基础上,实现客户端对PC端扫码登录.不 ...
- Channels实现扫码登录
参考了下别人说的原理,根据自己的逻辑实现,没有完全按照别人的原理来,所以不一定适用于大家,仅供参考吧!!! 流程如下: 1. web发起websocket链接,后端接受链接后立马发送第一次消息,为全局 ...
- 手机端可以和PC端同时在线-java QRCode 实现网站扫码登录(即支持同帐号多设备同时登录)
微信扫码测试地址:: http://sms.reyo.cn 用户名:aa 密码:123456 扫码登录实现方式很多,比如ajax轮询,http长连接(comet...),websocket,event ...
- Swoole 的微信扫码登录
微信应用的便捷,扫码登录方式越来越被现在的应用所使用.它因为不用去记住密码,只要有微信号即可方便快捷登录.微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实 ...
- 基于 Swoole 的微信扫码登录
随着微信的普及,扫码登录方式越来越被现在的应用所使用.它因为不用去记住密码,只要有微信号即可方便快捷登录.微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实 ...
- 二维码扫码登录原理及简单demo
扫码登录原理转载自: https://www.cnblogs.com/liyasong/p/saoma.html 需求介绍 首先,介绍下什么是扫码登录.现在,大部分同学手机上都装有qq和淘宝,天猫等这 ...
- Java 语言实现简易版扫码登录
基本介绍 相信大家对二维码都不陌生,生活中到处充斥着扫码登录的场景,如登录网页版微信.支付宝等.最近学习了一下扫码登录的原理,感觉蛮有趣的,于是自己实现了一个简易版扫码登录的 Demo,以此记录一下学 ...
- 【新版】使用 go-cqhttp 扫码登录,一键接入 ChatGPT 机器人到 QQ 群
目录 项目效果 安装 go-cqhttp 虚拟文件 启动 ChatGPT 项目效果 由于 ChatGPT 目前只能在漂亮国使用,所以想要在国内使用 ChatGPT 必然险阻重重 不仅时时刻刻要跟企鹅公 ...
- Web应用多账号系统设计及微信扫码登录实现
Web应用多账号系统设计及微信扫码登录实现 1 前言概述 公司对功能测试,性能测试,安全测试等等都做了比较好的自动化后,急需要一个MIS系统来统一管理这些结果及报表. 此MIS系统特点如下: 仅内 ...
- C#开发微信门户及应用(45)--微信扫码登录
在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...
随机推荐
- STM32外设:通用输入输出 GPIO、EXIT
主要外设: GPIO:General Purpose I/O 一般用途IO EXIT:External Interrupt/Event Controller 外部中断/事件控制器(STM32) 辅助外 ...
- net8获取泛微token以及访问api示例
工作中涉及到调用泛微的场景,官方的示例又臭又长,抽空用NET8简化了写法,为了简化http访问,用了Flurl.Http这个库.在座各位大佬,我们直接就看代码了 using System.Secu ...
- springboot整合mybatis步骤思路
/** * springboot整合mybatis步骤思路 * 依赖导入 * 建表 * 实体类 * mapper配置文件 * mapper接口 * yaml配置 * properties配置数据库连接 ...
- Python——第二章:集合 Set
set集合,集合的特点是无序的 写法:s = {1,2,3} 但是如果内容是空的,它不是set集合,而是dict字典 s = {} print(type(s)) #输出结果 <class 'di ...
- Tailscale 基础教程:Headscale 的部署方法和使用教程
Tailscale 是一种基于 WireGuard 的虚拟组网工具,它在用户态实现了 WireGuard 协议,相比于内核态 WireGuard 性能会有所损失,但在功能和易用性上下了很大功夫: 开箱 ...
- 文心一言 VS 讯飞星火 VS chatgpt (29)-- 算法导论5.2 1题
一.在 HIRE-ASSISTANT 中,假设应聘者以随机顺序出现,你正好雇用一次的概率是多少?正好雇用 n 次的概率是多少? 文心一言: 讯飞星火: 华为盘古: 在HIRE-ASSISTANT中,假 ...
- GetX GetUtils
GetUtils 是 getx 为我们提供一些常用的工具类库,包括值是否为空.是否是数字.是否是视频.图 片.音频.PPT.Word.APK.邮箱.手机号码.日期.MD5.SHA1等等. class ...
- java中获取内网IP
package com.dashan.utils.iputils; import org.apache.commons.lang.StringUtils; import javax.servlet.h ...
- 为什么vacuum后表还是继续膨胀?
摘要: 对于更新和删除操作频繁的表,会存在大量垃圾数据,导致磁盘空间的浪费和查询扫描时额外的IO开销,需要定期执行清理操作(vacuum)来控制行存表以及表上索引的膨胀.本文将对vacuum的原理以及 ...
- 设备如何使用go sdk轻松连接华为云IoT平台?
摘要:本文介绍使用huaweicloud-iot-device-sdk-go 连接华为云IoT平台,实现简单的华为云文档介绍的四个功能:设备连接鉴权.设备命令.设备消息和设备属性. 本文分享自华为云社 ...