当前位置:首页 > 科技  > 软件

Vue3问题:如何实现微信扫码授权登录?

来源: 责编: 时间:2023-11-20 08:57:13 165观看
导读昨天搞了个服务器,腾讯云的轻量应用服务器,价格还算实惠。又搞了个自己的域名,但在起名字时犯了难,想了半天都不知道叫啥,后来还是感谢对象的指点,哈哈哈。拥有了自己的服务器,接下来,就可以开始我的后端微服务学习啦,加油共勉

dcU28资讯网——每日最新资讯28at.com

昨天搞了个服务器,腾讯云的轻量应用服务器,价格还算实惠。又搞了个自己的域名,但在起名字时犯了难,想了半天都不知道叫啥,后来还是感谢对象的指点,哈哈哈。dcU28资讯网——每日最新资讯28at.com

拥有了自己的服务器,接下来,就可以开始我的后端微服务学习啦,加油共勉。dcU28资讯网——每日最新资讯28at.com

一、需求分析,问题描述

1、需求

微信扫码授权,如果允许授权,则登录成功,跳转到首页。dcU28资讯网——每日最新资讯28at.com

dcU28资讯网——每日最新资讯28at.com

2、问题

  • 微信扫码授权有几种实现方式?
  • 说一下这几种实现方式的原理是什么?
  • vue中的微信扫码授权登录,与uniapp和原生小程序的微信授权登录,它们之间有共同点吗?

二、解决问题,答案速览

1、网页跳转式

前端只需调用后端微信登录的接口即可。生成微信二维码、传递code参数等操作都在后端处理。dcU28资讯网——每日最新资讯28at.com

dcU28资讯网——每日最新资讯28at.com

dcU28资讯网——每日最新资讯28at.com

dcU28资讯网——每日最新资讯28at.com

2、网页内嵌式

  • 在public/index.html的head标签中引入wxLogin.js。
  • 在template中设置一个内嵌二维码容器,可以自定义容器的样式。
  • 创建WxLogin对象,配置必要参数,并通过id关联内嵌二维码容器。其中,参数redirect_uri和appid最关键,redirect_uri配置的是扫码授权成功后的重定向页面地址,在重定向页面可以拿到最最最重要的code参数。
  • 在重定向页面通过code参数请求后端微信登陆的接口,获取access_token并存到本地,登录成功跳转首页。此处根据业务自定义逻辑即可。
// 在public/index.html的head标签中引入<script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
<!-- 内嵌二维码容器 --><div id="login_container"></div>// 获取codevar obj = new WxLogin({      // 需要显示内嵌二维码的容器id      id: 'login_container',       // 应用ID      appid: '',       // 网页默认即可      scope: 'snsapi_login',       // 授权成功后回调的url      redirect_uri: encodeURIComponent(''),       // 可设置为简单的随机数加session用来校验      state: Math.ceil(Math.random() * 1000),       // 二维码的样式,提供"black"、"white"可选。      style: 'black',       // 自定义样式链接      href: ''     })  }
// 通过code请求接口获取access_tokenimport { useRoute, useRouter } from 'vue-router'const router = useRouter()const route = useRoutelet code = route.query.codelet state = route.query.stateif (code) {  let codeForm = {    code: code,// 关键    state: state,  }  // 调微信登录的后端接口  LoginApi(codeForm).then(res => {    localStorage.setItem('access_token', res.data.token)    router.push('home')  })}

dcU28资讯网——每日最新资讯28at.com

三、问题解析,知识总结

1、微信扫码授权登录有几种实现方式?

微信扫码授权登录有两种实现方式:网页外链式、网页内嵌式。dcU28资讯网——每日最新资讯28at.com

网页外链式

在选择带第三方登录方式时,点击微信登录,然后会跳转到一个新的微信扫码页面。当用户扫码允许授权登录后,就会自动关闭扫码页面,然后跳转到首页。dcU28资讯网——每日最新资讯28at.com

此方式可以算是后端处理。dcU28资讯网——每日最新资讯28at.com

网页内嵌式

在选择带第三方登录方式时,点击微信登录,会在当前页面的某处弹出一个内嵌的二维码。当用户扫码允许授权登录后,就会直接跳转到首页。dcU28资讯网——每日最新资讯28at.com

此方式可以算是前端处理,但这种方式比较推荐,用户体验比较好。dcU28资讯网——每日最新资讯28at.com

2、说一下这几种实现方式的原理是什么?

网页外链式

步骤一:用户进入登录页,在登录页选择微信登陆,前端调用后端微信登录的接口,后端会生成微信二维码,将地址返回给前端,前端响应后会在新页面打开这个二维码地址。dcU28资讯网——每日最新资讯28at.com

步骤二:用户用微信扫码,当授权成功后,就会自动重定向到后端扫码回调的接口。可以自动重定向到指定接口,是因为在生成二维码时,回调地址填的是后端接口地址,此处区别于网页内嵌式。dcU28资讯网——每日最新资讯28at.com

步骤三:后端会在重定向扫码回调接口中获取到code参数,再通过code参数获取到access_token、openid,进而获取用户信息,最终返回重定向首页地址给前端,登录成功跳转到首页。其中,地址内携带着access_token、openid、用户信息等参数,前端会保存这些参数到本地存储中。dcU28资讯网——每日最新资讯28at.com

dcU28资讯网——每日最新资讯28at.com

网页内嵌式

步骤一:用户进入登录页,在登录页选择微信登陆,然后就会在内嵌二维码容器中显示出二维码。dcU28资讯网——每日最新资讯28at.com

步骤二:用户用微信扫码,当授权成功后,就会自动重定向到中转页。其中,中转页可以是注册页,也可以是当前登录页。dcU28资讯网——每日最新资讯28at.com

步骤三:前端在中转页获取当前路由对象的query信息,并通过请求接口将query信息中的code参数传给后端。dcU28资讯网——每日最新资讯28at.com

步骤四:后端就会通过code参数获取到access_token、openid,进而获取用户信息,当前端拿到这些参数后就会登录成功,跳转到首页,并保存到本地存储中。dcU28资讯网——每日最新资讯28at.com

dcU28资讯网——每日最新资讯28at.com

3、vue中的微信扫码授权登录,与uniapp和原生小程序的微信授权登陆,它们之间有共同点吗?

uniapp的微信授权登录,主要借助uni.getUserProfile和uni.login这两个API实现。getUserProfile作用是获取用户授权,login作用是获取code参数。dcU28资讯网——每日最新资讯28at.com

原生小程序的微信授权登录,主要借助wx.getUserProfile和wx.login这两个API实现。getUserProfile作用是获取用户授权,login作用是获取code参数。dcU28资讯网——每日最新资讯28at.com

uniapp和原生小程序的微信授权登陆的原理,和vue中的微信扫码授权登录基本一致,掌握其一即可。dcU28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-30986-0.htmlVue3问题:如何实现微信扫码授权登录?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 解密 SSE,像 ChatGPT 一样返回流式响应

下一篇: 一文带你了解Netty

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 对标苹果的灵动岛 华为带来实况窗功能

    对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    没有新品发布,自然iOS设备性能榜的上榜设备就没有什么更替,仅仅只有跑分变化而产生的排名变动,毕竟苹果新品的发布节奏就是这样的,一年下来也就几个移动端新品,不会像安卓厂商,一
  • 一篇聊聊Go错误封装机制

    一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    在 Elasticsearch 中,function_score 可以让我们在查询的同时对搜索结果进行自定义评分。function_score 提供了一系列的参数和函数让我们可以根据需求灵活地进行设置。近期
  • .NET 程序的 GDI 句柄泄露的再反思

    .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
Top