vue集成钉钉单点登录

news2024/11/18 23:36:21

初始环境判断

  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.coloradmin.cn/o/1105865.html

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

相关文章

某翻译网站webpack 全扣js逆向法

持续创作文章&#xff0c;只是为了更好的思考 如下内容&#xff0c;如果有写的不清楚&#xff0c;不对的地方&#xff0c;也请大家提醒我一下&#xff0c;谢谢&#xff01; 本次的目标是某道翻译网站&#xff0c;相信各位爷应该明白&#xff0c;这次逆向的整体做法还是把webpac…

Element UI打开表单自动验证问题的解决

最近深陷Element表单验证的坑&#xff0c;被一个问题困扰了好几天&#xff1a;页面一打开什么都没做表单就自动验证。在排除页面未触发了validate方法的情况下&#xff0c;需要观察下rules值是否发生了变化&#xff0c;如果rules值发生了变化&#xff0c;需要在<el-form>…

单片机学习一定要先买开发板么?

今日话题&#xff0c;单片机学习一定要先买开发板么&#xff1f;不一定要先买&#xff0c;但如果想要深入学习&#xff0c;在对单片机有了一定的了解之后&#xff0c;还是建议买。如果是单纯为了入门学习单片机&#xff0c;完全可以用仿真软件。不过&#xff0c;如果想要用单片…

木与空间的舞蹈:奥地利住宅的独特设计

国外著名设计师&#xff0c;为一位业主设计了一座住宅&#xff0c;附带有附属建筑和有盖的入口&#xff0c;形成了像庭院一样的建筑群。 这座住宅采用了当地的传统建筑风格&#xff0c;有长方形的平面和陡峭的顶棚&#xff0c;与周围的房屋相符。然而&#xff0c;内部设计别具一…

【ChatGLM2-6B】在只有CPU的Linux服务器上进行部署

简介 ChatGLM2-6B 是清华大学开源的一款支持中英双语的对话语言模型。经过了 1.4T 中英标识符的预训练与人类偏好对齐训练&#xff0c;具有62 亿参数的 ChatGLM2-6B 已经能生成相当符合人类偏好的回答。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&…

PhotoShop字体加粗,PhotoShop字体添加边框,PhotoShop设置文字背景为图片

字体加粗 创建文字&#xff1a; 选中文字 &#xff08;用鼠标点一下&#xff09; 然后 转换为智能对象 输入合适的数值即可加粗字体 字体添加外边框 点击字体&#xff0c;点击右下角的fx 咋fx中选择描边 设置文字背景为图片 将文字放到刚刚图片所在的位置即可 。…

useragent识别访问设备

背景需求 ruoyi框架&#xff0c;前后端分离。现在要在用户访问的时候根据不同的设备跳转到不同的登录页面。 教程 router/index.js 修改src/router/index.js&#xff0c;在这里增加自己的要跳转的页面 permission.js 在白名单中添加自己的登录页面 增加以下识别的代码 le…

F5负载均衡知多少?一文为你详细解读

在当今数字化时代&#xff0c;网络应用的可用性和性能对于企业的成功至关重要。而F5负载均衡技术则成为了许多企业实现高可用性和高性能的关键工具之一。那么什么是负载均衡&#xff0c;F5负载均衡有哪些强大的性能呢&#xff1f;跟上我的脚步一起来看看&#xff0c;充实你的知…

cbu和无cc的shiro反序列化

前置知识 学习CommonsBeanutils之前应该知道 javaBean&#xff0c;可以看《Java简单特性》也可以看这里有关BeanComparator的介绍TemplatesImpl gadget&#xff0c;前两个方法是public TemplatesImpl#getOutputProperties() -> TemplatesImpl#newTransformer() -> Tem…

用于细胞定位的指数距离变换图--Exponential Distance Transform Maps for Cell Localization

论文&#xff1a;Exponential Distance Transform Maps for Cell Localization Paper Link&#xff1a; Exponential Distance Transform Maps for Cell Localization Code&#xff08;有EDT Map的生成方式&#xff09;&#xff1a; https://github.com/Boli-trainee/MHFAN 核…

2023.10.18 区别 对象 和 类对象

目录 对象 类对象 总结 对象 对象是类的实例化结果它是内存中的一块区域&#xff0c;包含了该类的属性和方法的具体值和实现对象具有唯一的标识、状态、行为通过创建类的实例&#xff0c;我们可以在程序中操作和处理具体的对象 简单实例 class Person {public int high 1…

ruoyi识别访问设备是pc端还是移动端跳转到对应的登录页面

背景需求 ruoyi框架&#xff0c;前后端分离。现在要在用户访问的时候根据不同的设备跳转到不同的登录页面。 教程 router/index.js 修改src/router/index.js&#xff0c;在这里增加自己的要跳转的页面 permission.js 在白名单中添加自己的登录页面 增加以下识别的代码 le…

6. 方法引用

我们在使用lambda时&#xff0c;如果方法体中只有一个方法的调用的话&#xff08;包括构造方法&#xff09;,我们可以用方法引用进一步简化代码。 6.1 推荐用法 我们在使用lambda时不需要考虑什么时候用方法引用&#xff0c;用哪种方法引用&#xff0c;方法引用的格式是什么。…

java正则校验金额

整数位5位 小数位4位 public static boolean judgeTwoDecimalFour(Object obj) {boolean flag false;try {if (obj ! null) {String source obj.toString();// 判断是否是整数或者是携带一位或者两位的小数Pattern pattern Pattern.compile("^[]?([0-9]{1,5}(.[0-9]{1…

【数字人】4、RAD-NeRF | 通过解耦 audio-spatial 编码来实现基于 NeRF 的高效数字人合成

文章目录 一、背景二、方法2.1 问题定义2.2 Decomposed audio-spatial encoding module2.3 Pseudo-3D Deformable Module 用于控制 torso2.4 训练细节 三、效果3.1 实验设置3.2 对比 论文&#xff1a;Real-time Neural Radiance Talking Portrait Synthesis via Audio-spatial …

【前端学习】—变量类型和计算(五)

【前端学习】—变量类型和计算(五) 一、JS中使用typeof能得到哪些类型 字符串(String):表示文本数据,用单引号或双引号括起来。 数字(Number):表示数值数据,包括整数和浮点数。 布尔值(Boolean):表示真或假(true或false)的逻辑值。 空值(Null):表示一个空…

echarts的markline警标线(一条/多条)的使用

echarts之markLine(可以设置特定阈值线(警戒线)) 一条线写法 series: [{name: Fake Data,type: line,showSymbol: false,data: data,markLine: {symbol: [none, none], // 去掉箭头label: {show: false,position: start,formatter: {b}},data: [{name: 阈值,yAxis: 200}],line…

[备忘]WindowsLinux上查看端口被什么进程占用|端口占用

Windows上 查看端口占用&#xff1a; netstat -aon|findstr <端口号> 通过进程ID查询进程信息 tasklist | findstr <上一步查出来的进程号> 图例&#xff1a; Linux 上 查看端口占用&#xff1a; netstat -tuln | grep <端口号> lsof -i:<端口号&…

Canvas绘图学习笔记:画笔的路径与状态

beginPath beginPath表示开始一个路径&#xff0c;我们在上一章画弧的时候用到过好多次&#xff0c;他的API非常简单&#xff1a; context.beginPath(); 开始路径有2层意思&#xff0c;一个就是本次绘制的起点是新的&#xff08;不再是上次结束的点了&#xff09;&#xff0…

诈骗分子投递“大闸蟹礼品卡”,快递公司如何使用技术手段提前安全预警?

目录 快递公司能不能提前识别&#xff1f; 如何通过技术有效识别 为即将带来的双十一提供安全预警 金秋十月&#xff0c;正是品尝螃蟹的季节。中秋国庆长假也免不了走亲访友&#xff0c;大闸蟹更是成了热门礼品。10月7日&#xff0c;演员孙艺洲发布微博称&#xff0c;“收到…