php钉钉企业微应用免登demo,钉钉微应用免登实现
用户在使用软件应用的过程中,第一步往往都是登录。输入账号密码,进行登录,登录的目的就是让应用识别张三是张三,而不是李四。相对应,如果能够不用输账号密码,应用就知道你是你,就叫做免登。
免登的源头还是需要登录的。业内企业内部登录往往采用统一登录中心SSO的方案,比如集成CAS。一个同一地址登录,同一域名下采用识别cookie的方式解析用户名。也就是,登录了OA之后,访问HR、邮箱等等,在关闭浏览器之前,不需要再次登录。钉应用实现免登,本质上也是通过钉钉实现登录。因为使用者已经输入账号密码或者手机号验证码在钉钉实现了登录,钉钉已经保存了用户的信息。
具体实践,实现钉应用免登可以分为下面几个步骤。
1、钉应用用户信息与钉钉通讯录打通。比如用户通过手机号实现关联。
2、前端代码,调用JSapi获取免登授权码。
3、后端代码,调用服务端接口解析授权码,实现登录。
4、后端代码,识别用户后,实现登录逻辑。
下面用后台java代码和前端vue代码来实际说明。
通讯录的同步忽略了,按照钉钉服务端接口能够实现同步。我们直接看前端的获取免登授权码该如何获取。
loginByCode(corpId) {
const _this= this;
console.log("requestAuthCode begin");
_this.dd.runtime.permission.requestAuthCode({
corpId: corpId,
onSuccess:function(result) {
console.log("requestAuthCode:" +result.code);
_this.httpUtils.appGet('/login/loginByCode?code=' + result.code).then(function(res) {
const user=res.data;
window.localStorage.setItem("user", JSON.stringify(user));
},function(r) {
_this.commonUtils.commonAlert(r.msg);
})
},
onFail:function(err) {
alert("客户端-获取免登授权码失败:" +JSON.stringify(err));
}
})
},
上面的代码块封装了loginByCode的方法,其主要功能就是获取授权码,然后将授权码传到后台,获取用户信息。关键的代码就是
dd.runtime.permission.requestAuthCode
这一个函数需要传入一个corpId作为参数,该参数在企业后台能够找到。获取授权码失败,我们可以把错误信息弹框显示出来。获取成功,就可以请求后台的接口拉取用户信息。接下来看看后台是如何实现的。
@GetMapping("loginByCode")
public UserVO list(@RequestParam String code) {
log.info(code);
UserInfoByCodeResponse response=userInfoByCodeRequest.get(code);returndingUserQueryService.getVOByUserId(response.getUserid());
}
上图后端代码展示了获取用户信息的顺序,即先解析授权码,得到用户信息,然后再去匹配用户信息,找到当前的用户。这里简化了登录的业务步骤,如果有集成鉴权,这一块是需要另写代码实现。接下来详细了解下userInfoByCodeRequest做了什么。
private String userInfoUrl = "https://oapi.dingtalk.com/user/getuserinfo?access_token={accessToken}&code={code}";
public UserInfoByCodeResponse get(String code) {
Map param =tokenService.getTokenMap();
param.put("code",code);returnrequestUtils.getWithUrlParam(userInfoUrl, UserInfoByCodeResponse.class, param);
}
如图所示,其实就是坐了个请求,请求URL关键标识为user/getuserinfo。钉钉会返回用户数据给你。钉钉返回的数据会包含userid这一数据,通过这一数据在应用从钉钉通讯录同步过来的数据中,即可定位到一位用户,这也就是下面这行代码做的事情。
dingUserQueryService.getVOByUserId(response.getUserid()
注意这行代码是完全在应用内实现的,比如笔者这里就是去数据库根据userid查找用户,返回用户信息。至此,微应用免登就实现完毕,是不是很简单呢。觉得简单就点个赞留个言吧,有问题欢迎联系笔者共同探讨。
php钉钉企业微应用免登demo,钉钉微应用免登实现相关推荐
- 钉钉通知-调用钉钉发送企业内部消息开发
首先,我们要明确需求:自己的系统需要发送通知消息到用户,接收消息用户为同一企业内的人员,选用短信可能涉及到费用问题,故可以选用钉钉或者企业微信,在此我使用钉钉进行发送消息. 调用钉钉发送企业内部消息: ...
- Prometheus监控(三)—— 钉钉和企业微信告警
一.prometheus 实现钉钉和企业微信告警 基础流程 1.1 钉钉通知 altermanager基础设置可以参照: https://editor.csdn.net/md/?articleId=1 ...
- 企业IM,阿里钉钉“恶”企业微信“善”?
(图片来源于网络) 文 | 易不二 编辑排版| 黄娇 来源 | 螳螂财经(ID:TanglangFin) 用过钉钉的人应该都不会对几个场景感到陌生. 有时候下班了,老板或同事发来一条消息,但自己正在忙 ...
- JeecgBoot低代码平台 2.4.5 版本发布,钉钉与企业微信集成版本
项目介绍 JeecgBoot是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shi ...
- 钉钉扫码登录第三方_e签宝联合钉钉升级产品功能,共建企业服务生态闭环
钉钉微应用更新了,e签宝助力升级.互联网时代下,传统模式的"稳定"已然成为历史,客户的需求在不断变化,我们创新的脚步也从未停止. e签宝携手钉钉,双方着力共建开放.共生.多赢的企业 ...
- 钉钉、企业微信、飞书的掘金逻辑
互联网进程已经从上半场的消费互联网,转为下半场的产业互联网.TO B,成为互联网巨头挖掘产业增量的另一赛道. 各家企业进入赛道的方式都不同.目前,钉钉.企业微信.飞书三家远程办公平台,成为阿里.腾讯. ...
- NC移动报表H5应用介绍-可以集成钉钉或者企业微信
移动报表H5应用介绍 目录 移动报表H5应用介绍... 1 1产品介绍... 2 1.1前言... 2 1.1.1简介... 2 1.1.2产品特色:... 2 1.2移动报表APP介绍... 2 1 ...
- 华为出手了!19万人在用的“办公神器”正式发布,钉钉、企业微信遇上对手了?...
点击上方蓝字,关注肉眼品世界~ 深度价值体系传递 导读:近年来,互联网巨头纷纷布局智能办公领域,从阿里的办公软件钉钉,到腾讯的视频会议产品,再到华为的华为云WeLink. 移动智能办公成为了云计算江湖 ...
- NC移动报表H5应用介绍可以集成钉钉和企业微信
移动报表H5应用介绍 目录 移动报表H5应用介绍 1 1产品介绍 2 1.1前言 2 1.1.1简介 2 1.1.2产品特色: 2 1.2移动报表APP介绍 2 1.2.1产品适用NC版本 2 2安装 ...
- 阿里钉钉和企业微信怎样为企业社交服务?
在企业社交领域里,阿里钉钉和企业微信这两大巨头,正在各自轨道上加速突进,以不同的模式在企业级服务市场引发深刻变化.钉钉和企业微信是目前市面上使用用户量较多的两款产品,两者在办公管理方面的基本功能特点都 ...
最新文章
- asp.net跳转并接收参数
- MoSCow和Kano
- Android 5.0+高级动画开发 矢量图动画 轨迹动画 路径变换
- php无法下单功能,PHP如何解决并发下单问题?(不一定是下单,举个例)
- 一个小厂前端 Leader 如何筛选候选人?
- C# RichTextBox 实现循环查找关键字
- shell基础--字符串和变量的操作
- 性能优化篇 之 如何开展优化类的工作(2)
- NoSQL数据库介绍
- 山东大学软件学院2022数据化企业期末复习总结
- 前端使用阿里云图标库
- 五年产品经理的转正述职报告(附PPT下载)
- Frame-Relay基础及配置学习笔记
- 2019毕业设计总结——基于稀疏表示的人脸图像超分辨率重构
- uclinux编译 心得一
- 死亡计算机在线使用,抖音死亡计算器珍惜时间测试入口 抖音珍惜时间死亡计算器在线测试...
- 如何充分利用Composition API对Vue3项目进行代码抽离
- firefly 3399 开发板笔记
- 2019年9月全国计算机公共基础题库【速刷版】
- 计算机应用基础实验报告心得体会,计算机应用基础实训总结报告