vue集成钉钉单点登录

初始环境判断

  1. 判断是否是来自钉钉环境的访问,返回:boolean类型值
window.navigator.userAgent.includes("DingTalk")
  1. 前端引入vue中钉钉相关的依赖,并获取钉钉的临时授权码
import * as dingtalk from 'dingtalk-jsapi';
let that = this;
// 获取应用免登授权码
dingtalk.ready(function () {dingtalk.runtime.permission.requestAuthCode({//`在这里插入代码片` this.$route.query.corpId 为钉钉携带的参数corpId: this.$route.query.corpId, onSuccess: function (result) {if (result && result.code) {that.code = result.code;util.cookies.set("dingCode", that.code);}// 根据授权码查询钉钉用户信息},onFail: function (err) {},});
});
  1. 后端调用钉钉接口,获取钉钉用户信息

登录钉钉开发平台,(访问地址 https://login.dingtalk.com/),创建应用并获取对应的配置。

钉钉集成 pom.xml sdk依赖

<dependency><groupId>net.guerlab.cloud.dingtalk</groupId><artifactId>guerlab-cloud-dingtalk-core</artifactId><version>2022.1.0</version>
</dependency>

获取微应用后台免登的 access_token
接口地址:https://oapi.dingtalk.com/sso/gettoken

DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/sso/gettoken");
OapiSsoGettokenRequest req = new OapiSsoGettokenRequest();
req.setCorpid("ding1234");
req.setCorpsecret("2pyNWs4LV8Ge2Mxxxx");
req.setHttpMethod("GET");
OapiSsoGettokenResponse rsp = client.execute(req);
System.out.println(rsp.getBody());

corpsecret参数来自钉钉应用管理后台配置,如下图示:
在这里插入图片描述
获取应用免登的用户信息
接口地址:https://oapi.dingtalk.com/topapi/v2/user/getuserinfo

DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/sso/getuserinfo");
OapiSsoGetuserinfoRequest req = new OapiSsoGetuserinfoRequest();
req.setCode("<临时免登授权码>");
req.setHttpMethod("GET");
// access_token 来自上文token获取接口
OapiSsoGetuserinfoResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

No171.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

Linux-git

文章目录 git简介git常用命令配置初始化仓库将文件添加到暂存区将暂存区文件加入版本库对比工作区某文件和暂存区中的区别将暂存区的文件移除但git仍管理将文件移除暂存区并且git不再管理查看版本库切换到之前的版本恢复文件持久化 云端将本地的项目推送到远程仓库将远程仓库的…

深度强化学习 第 5 章 SARSA 算法

上一章介绍了 Q 学习的表格形式和神经网络形式&#xff08;即 DQN&#xff09;。 TD 算法是一大类算法的总称。上一章用的 Q 学习是一种 TD 算法&#xff0c; Q 学习的目的是学习最优动作价值函数 Q ⋆ Q_⋆ Q⋆​ 本章介绍 SARSA&#xff0c;它也是一种 TD 算法&#xff0c; S…

车载视频如何转换视频格式

当你收集了多种视频想在车内进行播放&#xff0c;它们可能不会自动播放。你有可能会在屏幕上看到一条消息&#xff0c;显示“文件格式不受支持”&#xff0c;这是因为这些视频可能采用了你的汽车无法识别的格式。 那我们如何才可以转换为车载播放器上运行的最重要且最广泛使用…

使用数组方法打印出 1 - 10000 之间的所有对称数。例如:121、1331等

&#xff08;我从别的人那复制的&#xff0c;原文章请点击此处&#xff09; 源代码&#xff1a; function getNum (start, end) {var arr [];for(var i start; i < end; i) {if (i.toString() i.toString().split().reverse().join() && i.toString().length &…

算法设计作业

7-8 python def quicksort(arr):if len(arr) < 1:return arrpivot arr[len(arr) // 2]left [x for x in arr if x < pivot]middle [x for x in arr if x pivot]right [x for x in arr if x > pivot]return quicksort(left) middle quicksort(right)# 测试代码…

leetcode 739. 每日温度、496. 下一个更大元素 I

739. 每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: …

网络协议--IP:网际协议

3.1 引言 IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输&#xff08;见图1-4&#xff09;。许多刚开始接触TCP/IP的人对IP提供不可靠、无连接的数据报传送服务感到很奇怪。 不可靠&#xff08;unreliable&#xff09;的意思是它不能…

Qt Designer生成ui文件,如何转py文件,如何运行

下面将逐步介绍ui文件如何转py文件&#xff0c;怎么运行的具体操作步骤 ui文件转py文件 1.使用Qt Designer生成ui文件&#xff0c;保存到本地 2.输入 cmd &#xff0c;打开命令行窗口 3.进入ui文件的目录下&#xff0c;文件路径使用你本地存放ui文件的位置 cd /d ui文件路径…

安卓富文本部分高亮及点击事件

安卓富文本部分高亮及点击事件 前言一、富文本是什么&#xff1f;二、实现方法1.使用html2.使用SpannableString 总结 前言 富文本其实不是很常用&#xff0c;但有遇到了过后使用很方便的场景&#xff0c;例如免责声明。这时候就很重要了&#xff0c;前段时间遇到了&#xff0…

可视化(Visual) SQL初探

一、背景 在当今数字化时代&#xff0c;数据信息作为企业和组织的宝贵资源之一&#xff0c;如何挖掘其中的价值并帮助企业和组织个体决策&#xff0c;已然成为炙手可热的话题。数据分析作为其具体载体&#xff0c;是从数据中提取信息、洞察机遇、制定战略、做出决策的关键过程…

【C++面向对象】2.构造函数、析构函数

文章目录 【 1. 构造函数 】1.1 带参构造函数--传入数据1.2 无参构造函数--不传入数据1.3 实例1.4 拷贝构造函数 【 2. 析构函数 】 【 1. 构造函数 】 类的构造函数是类的一种特殊的成员函数&#xff0c;它会 在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同…

js函数调用的方式有几种

在 JavaScript 中&#xff0c;函数可以通过不同的方式进行调用。以下是常见的几种函数调用方式&#xff1a; 函数调用&#xff1a;使用函数名称后跟一对小括号来调用函数&#xff0c;这是最基本的调用方式。 functionName(); 方法调用&#xff1a;函数可以作为对象的方法进行调…

统计学习方法 感知机

文章目录 统计学习方法 感知机模型定义学习策略学习算法原始算法对偶算法 学习算法的收敛性 统计学习方法 感知机 读李航的《统计学习方法》时&#xff0c;关于感知机的笔记。 感知机&#xff08;perceptron&#xff09;是一种二元分类的线性分类模型&#xff0c;属于判别模型…

【JAVA-Day49】Java LinkedList集合详解

Java LinkedList集合详解 摘要引言Java LinkedList集合详解一、什么是LinkedList集合1.1 链表数据结构1.2 双向链表1.3 动态大小1.4 插入和删除元素1.5 适用场景 二、LinkedList集合的使用2.1 创建 LinkedList 集合、添加元素、遍历元素2.2 在指定位置插入元素2.3 获取指定位置…

Linux Server 终止后立即重启报错 bind error: Address already in use

先启动Server&#xff0c;再启动Client&#xff0c;然后使用CtrlC关闭Server&#xff0c;马上再运行Server&#xff0c;会得到以下结果&#xff1a; bind error: Address already in use这是因为&#xff0c;虽然Server的应用程序终止了&#xff0c;但TCP协议层的连接并没有完全…

【Luogu】 P4619 [SDOI2018] 旧试题

题目链接 点击打开链接 题目解法 考虑 d ( i j k ) d(ijk) d(ijk) 不好求 但我们可以转化 d ( i j k ) ∑ u ∣ i ∑ v ∣ j ∑ w ∣ k [ ( u , v ) 1 ] [ ( u , w ) 1 ] [ ( v , w ) 1 ] d(ijk)\sum\limits_{u|i}\sum\limits_{v|j}\sum\limits_{w|k}[(u,v)1][(u,w)1]…

Maven的详细介绍(maven的全据配置以及idea中maven的配置)

maven的理解 Maven 是一个强大的项目管理和构建自动化工具&#xff0c;它通过抽象的项目对象模型(POM&#xff1a;Project Object Model)和构建生命周期模型(Project Lifecycle)来对项目及其构建过程进行管理(Dependency Management System)&#xff0c;Maven 最大化的消除了构…

Spring MVC(中)

1、Spring MVC视图&#xff1a; SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户 SpringMVC视图的种类很多&#xff0c;默认有转发视图和重定向视图 当工程引入jstl的依赖&#xff0c;转发视图会自动转换为JstlView …

【TensorFlow1.X】系列学习笔记【入门二】

【TensorFlow1.X】系列学习笔记【入门二】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【入门二】前言神经网络的参数神经网络的搭建前向传播反向传播 总结 前言 学习了张量、…