关于企业微信扫码登陆vue
关于企业微信扫码登陆vue
- 企业微信扫码登陆官方文档
- 采用的是第一种(构造独立窗口登录二维码)
- 对于前端来说就步骤就是 页面展示二维码 => 用户扫码登陆点击确定 => 确定之后重定向自己配置的路径 => 企业微信会返回一个code => 前端截取code传给后台换取token ,话不多说上代码。
- 在其login页面
<template>
<div class="login">
<section class="code-login">
<div class="login-way">
<div>
<span class="weixin"></span>
<span>企业微信扫码登录</span>
</div>
</div>
<iframe :src="wechatUrl" frameborder="0" scrolling="no" width="100%" height="100%"
id="wx_reg">
<p>您的浏览器不支持 iframe 标签。</p>
</iframe>
</section>
</div>
</template>
<script>
import { loginTf } from '../../api/login'; // 换取token接口
export default {
data() {
return {
wechatUrl: 'https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=你的id&agentid=1000002&redirect_uri=http%3A%2F%2F127.0.0.1%3A8080%2Flogin&state=23423ess'
// 我是重定向页面配置login页面,因为跳转时候会有空白用户体验度不好,还有就是全局路由前置守卫导航前端控制没有token的时候跳转login页面
};
},
created() {
// 获取code,请求后台,后台进行消费返回token ,code我是在前置守卫中储存的
let code = sessionStorage.getItem('code');
if (code) {
// 封装的请求接口
loginTf({ 'code': code, 'state': '后台需要传的值'}).then(res => {
if (res.b === 1) { // 获取成功渲染数据 a代表数组 o代表单个数据
let token = res.o; // 请求成功跳转首页
localStorage.setItem('token', token);
this.$router.replace('/index')
} else {
this.$router.push('/login');
if (res.data.ec[0]) {
errorMsg = res.data.ec[0];
} else {
errorMsg = '未知错误';
}
this.$message({ message: errorMsg, type: 'error', center: true });
}
}).catch(msg => {
this.$message({ message: '系统异常', type: 'error', center: true });
});
}
},
methods: {
},
};
</script>
<style lang="less" scoped>
<!-- 样式省略 -->
</style>
我是在mian.js当中,也可在router中
router.beforeEach((to, from, next) => {
// 扫码登录 // 守卫当中观察是否重定向页面没有,重定向页面会带code来进行消费返回token的
if (window.location.href.indexOf('code') >= 0) { // 如果code存在
//如果url中包含code split?分割成数组,取第二个
let code = window.location.href.split('?')[1];
code = code.substring(5, code.indexOf('&')); // 截取字符串第6位开始截取直到&出现截取成功
sessionStorage.setItem('code', code);
next();
} else {
if (to.path === '/login') { // 如果是登录页
localStorage.removeItem('token');
}
if (!localStorage.getItem('token') && to.path !== '/login') { // 如果token不存在 并且 不是mylogin页面
next({ path: '/login' });
} else {
next();
}
}
if (to.meta.title) {
// 给每个组件路由命名
document.title = to.meta.title;
}
});
关于企业微信扫码登陆vue的更多相关文章
- 分享一下,PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台就可以实现用户对接鹅厂,phpQQ微信扫码登陆
自己抓的QQ包以及整合了网上一些已经封装好了的代码具体如下:QQ: <?php class QQ extends Curl_Api { //获取登录验证码 public function QRc ...
- 微信扫码登陆(JAVA)
在web端用到weChat扫码登录,在手机扫码登陆成功后,跳转到相应的界面. 1.第一步请求code 调用接口:https://open.weixin.qq.com/connect/qrconnect ...
- PC 微信扫码登陆
目录 1.注册微信开发平台 2.微信开发平台添加网站应用 3.PC微信登录流程介绍 4.获取用户基本信息(UnionID机制) 1.注册微信开发平台 官网网址 自行注册,需要注意的是注册邮箱号不用与腾 ...
- 微信扫码登陆js
先贴一个微信开发文档教程 https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.ht ...
- 微信扫码登陆,qq登陆,微博登陆等第三方登陆成功后返回原来的页面并进行跳转
原理很简单,主要是利用到window.open的第二个属性,name 前端: 原来的网页给window命名为 window.name="single" window.open(“第 ...
- Vue+abp微信扫码登录
最近系统中要使用微信扫码登录,根据微信官方文档和网络搜索相关文献实现了.分享给需要的人,也作为自己的一个笔记.后端系统是基于ABP的,所以部分代码直接使用了abp的接口,直接拷贝代码编译不通过. 注册 ...
- asp源码微信扫码授权登陆电脑版
网站接入微信扫码登录并获取用户基本信息(完美绕过微信开放平台)电脑版网站实现微信扫码登录,注册会员还要设密码太麻烦,会员也记不住密码,采用微信扫码登录网站更方便,会员无需设密码,用他的微信做为系统登录 ...
- thinkphp.2 thinkphp5微信支付 微信公众号支付 thinkphp 微信扫码支付 thinkphp 微信企业付款5
前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2 把微信支付类.企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了 ...
- php实现微信扫码自动登陆与注册功能
本文实例讲述了php实现微信扫码自动登陆与注册功能.分享给大家供大家参考,具体如下: 微信开发已经是现在程序员必须要掌握的一项基本的技术了,其实做过微信开发的都知道微信接口非常的强大做起来也非常的简单 ...
- PHP实现微信扫码自动登陆与注册,参考实例
微信开发已经是现在phper必须要掌握的一项基本的技术了,其实做过微信开发的都知道微信接口非常的强大做起来也非常的简单,这里我们一起来看一个微信自动登陆注册的例子. php 微信扫码 pc端自动登陆注 ...
随机推荐
- 【kernel】从 /proc/sys/net/ipv4/ip_forward 参数看如何玩转 procfs 内核参数
本文的开篇,我们先从 sysctl 这个命令开始. sysctl 使用 sysctl 是一个 Linux 系统工具,后台实际上是 syscall,它允许用户查看和动态修改内核参数. # 查看当前设置的 ...
- 痞子衡嵌入式:MCUXpresso IDE下C++源文件中嵌套定义的复合数据类型命名空间认定
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下C++源文件中嵌套定义的复合数据类型命名空间认定. 痞子衡之前写过一篇文章 <MCUXpresso ...
- git gitignore文件不生效
配置了 .gitigore 文件不生效,是刚开始将那些过滤的文件加到了版本控制.后续增加的,没有进入到版本控制 解决办法就是从版本控制移除,重新更新下gitignore文件 执行以下命令: 根据情况自 ...
- 获取公众号openid,通过unionid 和小程序用户绑定起来
时间仓促,暂时记录一下,有问题请留言 背景:目前客户项目有两套系统.一套暂时定为A系统,另一套为B系统,两套系统下有不同的公众号,小程序. 需求:B系统为用户端系统,需要发送公众号模板消息,所以需要用 ...
- 常用 NoSQL 比较
Q: 请根据 CAP 实现程度,分布式实现方式,数据结构,查询方式,存储引擎等比较 mongodb, redis, cassandra, scylladb, dragonflydb, TiKV, co ...
- postgres
10.67 su - app docker pull postgres:12.15 docker run -d --name pgsql12 -p 5432:5432 -e "POSTG ...
- Android-studio-ide-201.7042882-windows-4.1.2项目卡在Gradle: Download gradle-6.5-bin.zip
现象描述: Android-studio-ide-201.7042882-windows-4.1.2项目卡在Gradle: Download gradle-6.5-bin.zip,如下所示: 原因分析 ...
- Javascript中不同的<script.../>元素中变量或函数的作用范围的说明
在同一个<script.../>元素中,Javascript允许先调用函数,然后再定义该函数:但是在不同的<script.../>元素中,必须先定义函数,再调用该函数,也就是说 ...
- 【狂神说Java】Java零基础学习笔记-Java数组
[狂神说Java]Java零基础学习笔记-Java数组 Java数组01:数组的定义 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数 ...
- 前端学习openLayers配合vue3(图层中心点的偏移)
有了上一步的学习,我们知道了如何创建一个地图,现在我们来尝试更改一下图层的中心点 关键代码 let view = map.getView();//获取视图层 let center = view.get ...