当前位置: 首页 > news >正文

钉钉扫码登录第三方

钉钉文档

实现登录第三方网站 - 钉钉开放平台 (dingtalk.com)

html页面

将html放在

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>登录</title>// jquery<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>// 钉钉二维码<script src="https://g.alicdn.com/dingding/h5-dingtalk-login/0.21.0/ddlogin.js"></script><style>/* STEP2:指定这个包裹容器元素的CSS样式,尤其注意宽高的设置 */.self-defined-classname {width: 300px;height: 300px;/* border: 1px #000 solid; */}</style>
</head><body><!-- STEP1:在HTML中添加包裹容器元素 --><div id="self_defined_element" class="self-defined-classname"></div>
</body></html>
<script>// STEP3:在需要的时候,调用 window.DTFrameLogin 方法构造登录二维码,并处理登录成功或失败的回调。window.DTFrameLogin({id: 'self_defined_element',width: 300,height: 300,},{   // 回调地址:可以理解为用户扫码同意后钉钉会重定向到你指定的地址并把授权码authCode拼接到该地址参数redirect_uri: encodeURIComponent('http://192.168.11.98:82/index'),client_id: 'dixxxxxxxxxxxxxx', // 你的企业内部应用appKeyscope: 'dingxxxxxxxxxxxxxxxxxxx',	// 保持不变 response_type: 'code',	// 保持不变state: 'pc',	// 跟随authCode原样返回prompt: 'consent',	// 值为consent时,会进入授权确认页},(loginResult) => {const { redirectUrl, authCode, state } = loginResult;// 用户扫码成功后获取到重定向地址以及同意的授权码,这里不做重定向地址。// 通过拿到的授权码调用我们第三方应用的钉钉授权码登录接口换取用户凭证tokenconsole.log(redirectUrl, authCode, state)$.ajax({url: `http://xxxxxxxxxxxxxxx/auth`,   // 后端接口method: 'get',contentType: 'application/json',data:{authCode:authCode},dataType: 'json',success: function (data) {if (data.code == 200) {// 获取token并缓存下来// window.localStorage.setItem('Admin-Token', data.token);document.cookie = 'Admin-Token='+data.token;// 重定向到首页parent.location.href = 'http://xxxxxxxxx/index'} else {alert('钉钉扫码登录失败,请再次尝试。');return;}},error: function (err) {alert(err);}});},(errorMsg) => {// 这里一般需要展示登录失败的具体原因alert(`Login Error: ${errorMsg}`);},);
</script>

将html通过iframe 放在登录页

<div><iframe src="/loginpage.html" ref="iframe" width="330px" height="330px" style="margin: 0px 0px 0px 20px;" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no" allowtransparency="yes"></iframe>
</div>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 暑假自律日记十
  • 用SmartSql从数据库表中导出文档
  • unsupported_country_region_territory
  • winform开发中的几个坐标
  • 顶顶通呼叫中心中间件实现随时启动和停止质检(mod_cti基于FreeSWITCH)
  • 【Spring Boot】关系映射开发(二):一对多映射
  • 【git命令大全】
  • Vue 3 与 TypeScript:最佳实践详解
  • Android ViewPostImeInputStage输入事件处理
  • 【MindSpore学习打卡】应用实践-LLM原理和实践-基于MindSpore实现BERT对话情绪识别
  • 【机器学习】独立成分分析(ICA):解锁信号的隐秘面纱
  • 道路运输企业管理人员安全考核试题(附答案)
  • 如何在工作中开悟?
  • element 如何实现文件上传下载导出
  • 基于QT开发的反射内存小工具
  • python3.6+scrapy+mysql 爬虫实战
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【笔记】你不知道的JS读书笔记——Promise
  • 230. Kth Smallest Element in a BST
  • Create React App 使用
  • javascript从右向左截取指定位数字符的3种方法
  • Laravel5.4 Queues队列学习
  • Linux后台研发超实用命令总结
  • python学习笔记-类对象的信息
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 我看到的前端
  • 物联网链路协议
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #stm32整理(一)flash读写
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (k8s)Kubernetes本地存储接入
  • (PADS学习)第二章:原理图绘制 第一部分
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (回溯) LeetCode 131. 分割回文串
  • (离散数学)逻辑连接词
  • (四)Linux Shell编程——输入输出重定向
  • (转)VC++中ondraw在什么时候调用的
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • *2 echo、printf、mkdir命令的应用
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net framework 4.8 开发windows系统服务
  • .net 后台导出excel ,word
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net的DataSet直接与SQL2005交互
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .ui文件相关
  • @media screen 针对不同移动设备