钉钉登录二维码嵌套在vue页面中
转自 https://www.csdn.net/tags/OtDacg3sMjQ2NTgtYmxvZwO0O0OO0O0O.html
<template>
<div id="app">
<div id="login_container"></div>
</div>
</template>
<script>
import axios from "axios"; export default {
name: "App",
components: {},
data() {
return {
appid: "dingb3x07ieb8wrwmw81",
redirectUrl: "https://console.huishouzx.com/login",
apiUrl:
"<用户信息接口,把redirectUrl回调获取的CODE给后端用于获取扫码用户信息>",
dingCodeConfig: {
id: "login_container",
style: "border:none;background-color:#FFFFFF;",
width: "365",
height: "400",
},
};
},
computed: {
getRedirectUrl() {
return encodeURIComponent(this.redirectUrl);
},
getAuthUrl() {
returnhttps://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=${this.appid}&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=${this.getRedirectUrl};
},
getGoto() {
return encodeURIComponent(this.getAuthUrl);
},
getDingCodeConfig() {
return { ...this.dingCodeConfig, goto: this.getGoto };
},
},
created() {
//调用
this.initDingJs();
},
mounted() {
this.addDingListener();
this.initDingLogin();
this.getUser();
},
methods: {
initDingJs() {
!(function (window, document) {
function d(a) {
var e,
c = document.createElement("iframe"),
d = "https://login.dingtalk.com/login/qrcode.htm?goto=" + a.goto;
(d += a.style ? "&style=" + encodeURIComponent(a.style) : ""),
(d += a.href ? "&href=" + a.href : ""),
(c.src = d),
(c.frameBorder = "0"),
(c.allowTransparency = "true"),
(c.scrolling = "no"),
(c.width = a.width ? a.width + "px" : "365px"),
(c.height = a.height ? a.height + "px" : "400px"),
(e = document.getElementById(a.id)),
(e.innerHTML = ""),
e.appendChild(c);
}window.DDLogin = d;
})(window, document);
},
addDingListener() {
let self = this; let handleLoginTmpCode = function (loginTmpCode) {
window.location.href =
self.getAuthUrl + `&loginTmpCode=${loginTmpCode}`;
}; let handleMessage = function (event) {
if (event.origin == "https://login.dingtalk.com") {
handleLoginTmpCode(event.data);
}
}; if (typeof window.addEventListener != "undefined") {
window.addEventListener("message", handleMessage, false);
} else if (typeof window.attachEvent != "undefined") {
window.attachEvent("onmessage", handleMessage);
}
},
initDingLogin() {
window.DDLogin(this.getDingCodeConfig);
},
getUser() {
let getQueryString = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}; let code = getQueryString("code"); if (code !== null) {
axios
.get(`${this.apiUrl}?code=${code}`)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
}
},
},
};
</script><style>
app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>



钉钉登录二维码嵌套在vue页面中的更多相关文章
- 微信长按识别二维码,在 vue 项目中的实现
微信长按识别二维码是 QQ 浏览器的内置功能,该功能的基础一定要使用 img 标签引入图片,其他方式的二维码无法识别. 在 vue 中使用 QrcodeVue 插件 demo1 在 template ...
- C#生成二维码,把二维码图片放入Excel中
/// <summary> /// 把图片保存到excel中 /// </summary> /// <param name="excelFilePath&quo ...
- 基于SignalR的消息推送与二维码描登录实现
1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...
- 网站实现微信登录之嵌入二维码——基于yii2开发的描述
之前写了一篇yii2获取登录前的页面url地址的文章,然后发现自己对于网站实现微信扫码登录功能的实现不是很熟悉,所以,我会写2-3篇的文章来描述下一个站点如何实现微信扫码登录的功能,来复习下微信扫码登 ...
- spring boot高性能实现二维码扫码登录(上)——单服务器版
前言 目前网页的主流登录方式是通过手机扫码二维码登录.我看了网上很多关于扫码登录博客后,发现基本思路大致是:打开网页,生成uuid,然后长连接请求后端并等待登录认证相应结果,而后端每个几百毫秒会循环查 ...
- spring boot高性能实现二维码扫码登录(中)——Redis版
前言 本打算用CountDownLatch来实现,但有个问题我没有考虑,就是当用户APP没有扫二维码的时候,线程会阻塞5分钟,这反而造成性能的下降.好吧,现在回归传统方式:前端ajax每隔1秒或2秒发 ...
- spring boot高性能实现二维码扫码登录(下)——订阅与发布机制版
前言 基于之前两篇(<spring boot高性能实现二维码扫码登录(上)——单服务器版>和<spring boot高性能实现二维码扫码登录(中)——Redis版>)的基础, ...
- .net实现扫描二维码登录webqq群抓取qq群信息
一.流程 1. //获得二维码的qrsig,cookie标志 2. //登录二维码获得二维码的状态,及最新的url 3. //登录此网址,获得Cookies 4.//cookies,筛选出skey信息 ...
- PC 商城扫描二维码登录
需求分析: 扫码入口,在pc登录首页新增二维码登录入口 点击扫码入口显示二维码 二维码有效时间为一分钟 超时后显示二维码失效,点击刷新后生成新的二维码 在app端用户登录并扫码后,点击确认登录,进行跳 ...
随机推荐
- CCF201509-2日期计算
问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天.满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍: 2) 年份是400的整数倍. ...
- No origin bean specified和 No destination bean specified
Beanutils.copyProperties 异常一: No origin bean specifiedBeanutils.copyProperties 异常二: No destination b ...
- apache开启图片缓存压缩
①-浏览器缓存图片信息 开启Apache的expires模块,重启Apache 2.在虚拟主机的配置文件里面,增加对图片信息缓存的配置,重启Apache 3.在网站目录里面填写测试代码 4.测试效果 ...
- C语言 之 多线程编程
一.基础知识 计算机的核心是CPU,承担了所有的计算任务. 操作系统是计算机的管理者,负责任务的调度.资源的分配和管理,统领整个计算机硬件. 应用程序则是具有某种功能的程序,程序是运行于操作系统之上的 ...
- Java中最早期的集合Vector
1.Vector类可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作. 2 ...
- linux三剑客试题汇总
1.找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 [root@localhost ~]# grep -E '^[sS]' /proc/meminfo [root@loca ...
- 如何满足一个前端对 Mock 的全部幻想
前端的痛苦 作为前端,最痛苦的是什么时候? 每个迭代,需求文档跟设计稿都出来了,静态页面唰唰两天就做完了.可是做前端又不是简单地把后端吐出来的数据放到页面上就完了,还有各种前端处理逻辑啊. 后端接 ...
- java基础知识-序列化/反序列化-gson基础知识
以下内容来之官网翻译,地址 1.Gson依赖 1.1.Gradle/Android dependencies { implementation 'com.google.code.gson:gson:2 ...
- 2.Docker容器学习之新生入门必备基础知识
0x02 Docker 核心概念 描述:Docker的三大核心概念镜像/容器和仓库, 通过三大对象核心概念所构建的高效工作流程; 1.镜像 [image] 描述:images 类似于虚拟机镜像,借鉴了 ...
- 新手入门C语言第八章:C循环
一.C 循环 有的时候,我们可能需要多次执行同一块代码.一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推.编程语言提供了更为复杂执行路径的多种控制结构.循环语句允许 ...
