扫码登录(uniapp&&vue)

手机 app 扫码登录网站

  1. 用户打开web端网页,进入扫码登录的界面;
  2. 从web端服务器获取二维码的唯一标识,用于表示该二维码所对应的用户,方便后面 PC端网页异步轮询xmlhttprequest (ajax),定期轮询后台 查看用户是否扫描二维码
  3. web端服务器在生成二维码时,与请求会的唯一标识(uuid)进行关联,后端将uuid存储到数据库中,方便后面轮询后台
  4. 用户打开APP端,扫描二维码进行授权登录操作
  5. APP客户端从二维码中读取到uuid,带着APP内的身份信息访问服务器 也就是token
  6. 服务器获取到用户信息之后,将用户的id更新到数据库前面存储的单条数据uuid中,此时web服务器就能拿到对应的用户id,之后生成登录身份信息返回给浏览器,即用户在web端完成了登录

代码实现

PC端

// 首先下载 qrcodejs2 模块  npm i qrcodejs2 --save
// 在组件中使用
<template><div class="qrcode" ref="qrCodeUrl"></div>
</template><script>
import QRCode from "qrcodejs2";
import axios from "axios";
export default {data() {return {uuid: "",  // 请求回来的唯一标识timer: "",};},methods: {// 获取唯一id生成二维码async getUuid() {const {data: { uuid },} = await axios.get("http://127.0.0.1:3000/ewm");this.uuid = uuid;// 生成二维码this.creatQrCode();},creatQrCode() {var qrcode = new QRCode(this.$refs.qrCodeUrl, {text: JSON.stringify({uuid: this.uuid,token: "123",}), // 需要转换为二维码的内容width: 100,height: 100,colorDark: "#000000",colorLight: "#ffffff",correctLevel: QRCode.CorrectLevel.H,});// 二维码显示成功之后 运行PC端网页异步轮询xmlhttprequest (ajax),定期轮询后台  每隔200毫秒向后端发送一次请求 查看是否登录成功this.getStatus();},// 轮询后端async getStatus() {let _this = this;const {data: { status },} = await axios.get("http://127.0.0.1:3000/isLogin", {params: {uuid: this.uuid,},});// 如果没有登录成功的话  一直询问是否登录成功if (status === 400) {this.timer = setTimeout(function () {_this.getStatus();}, 200);}clearTimeout(this.timer);},},mounted() {this.getUuid();},
};
</script>

APP端

<template><view class="content"><view @click="scan">扫码验证</view></view>
</template><script>export default {data() {return {}},methods: {scan() { //扫码验证var _this = this;uni.scanCode({onlyFromCamera: false, //为true只允许相机扫码,不加允许相册扫码success: function(res) {console.log(res.result, '@@@')// 发送请求将获取的  {"uuid":1650462410424,"token":"123"}  数据发送到服务端  服务端返回用户数据到浏览器  浏览器页面进行跳转页面uni.showToast({title: '扫码成功'})},fail: function(err) {console.log('扫码失败', err)}})},}}
</script>

扫码登录(uniappvue)相关推荐

  1. 一文详析微信和淘宝扫码登录背后的实现原理!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:imtech my.oschina.net/u/4231722/blog/3 ...

  2. Django使用Social-Auth实现微信第三方网站扫码登录

    前言 之前让网页公司制作新官网的时候规划有第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐(尤其是微信开放平台),所以一直拖延着,到了最近只能自己添加相关的功能. 由于是刚接触Pytho ...

  3. Spring Boot 实现扫码登录,这种方式太香了!!

    作者 | 93年颈椎病人 来源 | https://blog.csdn.net/q826qq1878/article/details/91041679 最近有个项目涉及到websocket实现扫码登录 ...

  4. 扫码登录是如何实现的?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 精品唯居 来源 | https://www.c ...

  5. 面试官:说说微信和淘宝扫码登录背后的实现原理?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | my.oschina.net/u/423172 ...

  6. 钉钉扫码登录第三方_在钉钉发布公司重要文件,真的安全吗?

    钉钉以疫情在家办公为契机,加上"幸运地"被教育部"选中",在2月5日,钉钉下载量首次超过微信,跃居苹果App Store排行榜第一,并打破App Store记录 ...

  7. 面试官:聊聊微信和淘宝扫码登录背后的实现原理?

    本文来源: my.oschina.net/u/4231722/blog/3154805 <Java工程师面试突击(第3季)>重磅升级,由原来的70讲增至140讲,内容扩充一倍,升级部分内容 ...

  8. 微信公众号开发扫码登录(java版)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 商家信息管理系统登录时可以用微信扫码登录. 参考文档是微信开放平台,**着重需要关注文档(开 ...

  9. 网站使用微信扫码登录流程

    微信扫码登录是一个标准的oauth 2.0的过程. 1.用户请求访问网站,选择微信登录. 2.redirect到微信二维码页面 3.获取微信登录二维码,请求参数包括本网站的appId和登录成功后跳转回 ...

最新文章

  1. 一文读懂常用日志框架(Log4j、SLF4J、Logback)有啥区别
  2. 看见到洞见之引子(二)机器学习算法
  3. python安装beautifulsoup失败_Win10环境下python36安装BeautifulSoup出现错误的解决办法
  4. 【差分隐私的Advanced composition到底是什么?】差分隐私系统学习记录(四)
  5. Java高并发编程详解系列-ThreadGroup介绍
  6. linux改目录权限和宿主。
  7. .NET 开源的免费午餐结束了?
  8. JBOD RAID0
  9. Origin 在新打开的工作区添加列
  10. MAC系统下jmeter安装教程
  11. linux安装protoc
  12. P2P直播软件设计的技术原理和改进
  13. linux ap中继模式,小米AIoT AX3600 WiFi 6有线中继模式(AP模式)自定义局域网LAN IP地址...
  14. 淘宝自动下单软件//下单神器、、
  15. 查找Excel最后一个非空单元格的值,你会吗?(适用于数据加行时,一直引用最后一个非空单元格的值)
  16. 软件测试入门知识了解
  17. 6款CSS特效边框样式
  18. 程序员面试阿里、腾讯、京东等大公司,这些套路你知道吗?
  19. P-手性单膦配体BaryPhos可实现Suzuki-Miyaura偶联反应
  20. 排列组合Cnm的计算公式

热门文章

  1. python3:求1,3,5,7,9····99的和
  2. 大机学习陷入尴尬境地
  3. 搭建开源Jumpserver跳板机
  4. Android 电源管理PowerManager
  5. 精致又实用的奇瑞小蚂蚁,你心动了嘛?
  6. Android设备上直接运行C/C++程序,无需ROOT!!!
  7. 都 2022 了,还不抓紧学 typeScript ?
  8. 山东大学软件学院创新实训——飞讯(八)
  9. 认识 ESP8266—ESP-01S (含AT指令)
  10. Allegro如何打印光绘层操作指导Plot模式