转自 https://www.csdn.net/tags/OtDacg3sMjQ2NTgtYmxvZwO0O0OO0O0O.html

  • 钉钉登录二维码嵌套在vue页面中

    2021-09-04 14:42:45

    <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() {

    return https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=${this.appid}&amp;response_type=code&amp;scope=snsapi_login&amp;state=STATE&amp;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 + `&amp;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("(^|&amp;)" + name + "=([^&amp;]*)(&amp;|$)", "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) =&gt; {
    console.log(response);
    })
    .catch((error) =&gt; {
    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页面中的更多相关文章

    1. 微信长按识别二维码,在 vue 项目中的实现

      微信长按识别二维码是 QQ 浏览器的内置功能,该功能的基础一定要使用 img 标签引入图片,其他方式的二维码无法识别. 在 vue 中使用 QrcodeVue 插件 demo1 在 template ...

    2. C#生成二维码,把二维码图片放入Excel中

      /// <summary> /// 把图片保存到excel中 /// </summary> /// <param name="excelFilePath&quo ...

    3. 基于SignalR的消息推送与二维码描登录实现

      1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

    4. 网站实现微信登录之嵌入二维码——基于yii2开发的描述

      之前写了一篇yii2获取登录前的页面url地址的文章,然后发现自己对于网站实现微信扫码登录功能的实现不是很熟悉,所以,我会写2-3篇的文章来描述下一个站点如何实现微信扫码登录的功能,来复习下微信扫码登 ...

    5. spring boot高性能实现二维码扫码登录(上)——单服务器版

      前言 目前网页的主流登录方式是通过手机扫码二维码登录.我看了网上很多关于扫码登录博客后,发现基本思路大致是:打开网页,生成uuid,然后长连接请求后端并等待登录认证相应结果,而后端每个几百毫秒会循环查 ...

    6. spring boot高性能实现二维码扫码登录(中)——Redis版

      前言 本打算用CountDownLatch来实现,但有个问题我没有考虑,就是当用户APP没有扫二维码的时候,线程会阻塞5分钟,这反而造成性能的下降.好吧,现在回归传统方式:前端ajax每隔1秒或2秒发 ...

    7. spring boot高性能实现二维码扫码登录(下)——订阅与发布机制版

       前言 基于之前两篇(<spring boot高性能实现二维码扫码登录(上)——单服务器版>和<spring boot高性能实现二维码扫码登录(中)——Redis版>)的基础, ...

    8. .net实现扫描二维码登录webqq群抓取qq群信息

      一.流程 1. //获得二维码的qrsig,cookie标志 2. //登录二维码获得二维码的状态,及最新的url 3. //登录此网址,获得Cookies 4.//cookies,筛选出skey信息 ...

    9. PC 商城扫描二维码登录

      需求分析: 扫码入口,在pc登录首页新增二维码登录入口 点击扫码入口显示二维码 二维码有效时间为一分钟 超时后显示二维码失效,点击刷新后生成新的二维码 在app端用户登录并扫码后,点击确认登录,进行跳 ...

    随机推荐

    1. CCF201909-1小明种苹果

      解题思路:定义一个二维数组来存放输入的信息,第一列用来存放所有果树的初始值,然后遍历数组.具体思路见代码注释. 第一遍提交得了80分,看了半天才明白了原因,快被自己蠢死...... 定义数组应该为a[ ...

    2. ZXing Blazor 扫码组件 , ssr/wasm通用

      项目介绍 本项目是利用 ZXing 进行封装的 Blazor 组件库 直接调用手机或者桌面电脑摄像头进行扫码 项目截图              项目地址 https://github.com/den ...

    3. Java学习day35(《大道至简》读后感)

      对于大一之前的我来说,并不明白计算机这个专业要做的是什么,在我的眼中敲敲键盘打打字就是这个专业的全部:对于现在的我而言,这样的想法显然是十分幼稚的. 当初高考完填报志愿时选择了这门专业,也并不是因为自 ...

    4. Codeforces Round #706 (Div. 2)B. Max and Mex __ 思维, 模拟

      传送门 https://codeforces.com/contest/1496/problem/B 题目 Example input 5 4 1 0 1 3 4 3 1 0 1 4 3 0 0 1 4 ...

    5. 2021.10.29 数位dp

      2021.10.29 数位dp 1.数字计数 我们先设数字为ABCD 看A000,如果我们要求出它所有数位之和,我们会怎么求? 鉴于我们其实已经求出了0到9,0到99,0到999...上所有数字个数( ...

    6. Apache Doris 通过ODBC连接SQL Server

      社区有小伙伴有使用Doris ODBC外表连接SQL Server数据库,使用中遇到不知道驱动怎么安装,苦于我这边也没有SQL Server的环境,正好社区有用户使用了这个数据库,也安装ODBC驱动测 ...

    7. CRUSE: Convolutional Recurrent U-net for Speech Enhancement

      CRUSE: Convolutional Recurrent U-net for Speech Enhancement 本文是关于TOWARDS EFFICIENT MODELS FOR REAL-T ...

    8. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作

      静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...

    9. K8s 如何提供更高效稳定的编排能力?K8s Watch 实现机制浅析

      关于我们 更多关于云原生的案例和知识,可关注同名[腾讯云原生]公众号~ 福利: ①公众号后台回复[手册],可获得<腾讯云原生路线图手册>&<腾讯云原生最佳实践>~ ②公 ...

    10. plicp 点云迭代最近邻点配准法

      输入参数 点云A的极坐标集合 点云A对应Lidar所在pose 点云B的极坐标集合 点云B对应Lidar所在pose Features 根据两个点云的弧度关系确定找点的起始位置 根据两个点云的弧度关系 ...