钉钉企业内微应用对现有系统的免登和消息发送
钉钉微应用 免登 消息发送
- 在钉钉中对已有系统的免登
- 新建企业内部开发H5微应用
- 对H5微应用的配置
- 免登授权码的获取
- 根据免登授权码获取用户身份
- 获取access_token
- 通过access_token 和 免登授权码获取用户信息
在钉钉中对已有系统的免登
新建企业内部开发H5微应用
对于为什么要选择企业内部H5微应用的开发,我这边也是比较尴尬,因为要满足原有系统的消息发送,所以只能选择企业内部应用,当然如果 只需要免登功能 的话选择移动应用接入,具体原因马上就来。
对H5微应用的配置
相信对于使用钉钉的管理员对于这些的配置,应该是不在话下的,简单明了。
其中应用首页地址就是点开微应用图标后会跳转的链接了。
那么可以跳转到现在使用的系统中就能进行各种码的获取和兑换,然后完成免登了。那么开始吧
免登授权码的获取
根据钉钉的官方开发文档,从微应用进行免登需要从前端页面获取免登授权码
ps:这个坑爹的操作可能有别的方法代替吧…
官方文档没有明确说一定要从前端获取,我下了PHP版本的SDK,但是东西太多太杂也没去详细了解,就问了一下客服,从那边得到了准确的答复,emmm,要从前端获取…基于已开发的系统功能,这种获取免登授权码的方式极其不友好!但是,人在屋檐下不得不低头。
上代码:
<script src="//g.alicdn.com/dingding/dingtalk-jsapi/2.6.0/dingtalk.open.js"></script>
<script type="text/javascript">dd.ready(function() {// dd.ready参数为回调函数,在环境准备就绪时触发,jsapi的调用需要保证在该回调函数触发后调用,否则无效。dd.runtime.permission.requestAuthCode({corpId: "dingd0d89575d06ae19c35c2f4657eb6378f",onSuccess: function(result) {//成功获取后跳转到指定的URL 通过GET传一下需要的参数 result.code就是获取到的免登授权码window.location.href='/?/&state=D_LOGIN&code='+result.code;},onFail : function(err) {}});});
</script>
因为本来在使用的系统就是有判断COOKIE啊啥的免登判断的,现在又多个跳转导致点微应用还要再多跳转一次就很silly B= =
反正现在只是初步完成需求,等后期再优化也没什么大毛病。
获取免登授权码之后 就是通过该码换取用户身份了
根据免登授权码获取用户身份
获取access_token
这是一个老生常谈的问题了,如果曾经使用过微信公众平台相关功能的,坑定都知道这么个东西,简而言之这个凭证就是爸爸,有了这玩意才有资格做别的事情。
那么要获取access_token 需要使用微应用的 AppKey 和 AppSecret,这两项都能从钉钉开放平台中获取
继续上代码
function d_login($url, $sid = ''){if($_GET['state']!="D_LOGIN") return;$code = $_GET['code'];$appKey = AppKey;$appSecret = AppSecret;$getAccessToken = curl_get("https://oapi.dingtalk.com/gettoken?appkey=".$appKey."&appsecret=".$appSecret);$getAccessToken = _decode($getAccessToken);$access_token = $getAccessToken['access_token'];
}
那么现在access_token就获取到了
ps: curl_get是我们系统封装过的curl请求 ,总体来说就是通过访问某个URL,然后就会返回结果。
通过access_token 和 免登授权码获取用户信息
现在access_token和免登授权码都有了,就能着手获取用户信息了
废话不多说,继续上面未完成的代码
function d_login($url, $sid = ''){if($_GET['state']!="D_LOGIN") return;$code = $_GET['code'];$appKey = AppKey;$appSecret = AppSecret;$getAccessToken = curl_get("https://oapi.dingtalk.com/gettoken?appkey=".$appKey."&appsecret=".$appSecret);$getAccessToken = _decode($getAccessToken);$access_token = $getAccessToken['access_token']; //如果不需要部门等信息,到这一步,获取userId其实就足够了$getUserId = curl_get("https://oapi.dingtalk.com/user/getuserinfo?access_token=".$access_token."&code=".$code."");$getUserId = _decode($getUserId);//这边返回的就是详细的用户信息了,包括部门、是否管理员等信息$getUserInfo = curl_get("https://oapi.dingtalk.com/user/get?access_token=".$access_token."&userid=".$getUserId['userid']."");$getUserInfo = _decode($getUserInfo);//因为我需要用唯一的id和系统内部的userid绑定 所以就只取了userid,然后绑起来$d_openid = $getUserInfo['userid'];
}
至于怎么绑定到对应用户,这边再说我都感觉没面子,如果你不是开发人员,那就找开发人员,最多一顿午饭的事情,他就能帮你搞定= =
将d_openid存到cookie中,设定多长的有效时间就自己决定吧。
今天时间有限,就先到这里了。
钉钉企业内微应用对现有系统的免登和消息发送相关推荐
- 钉钉开发第三方H5微应用入门详细教程[ISV][免登流程][授权码][HTTP回调推送][识别用户身份][获取用户信息]...
转载请注明原文地址:https://www.cnblogs.com/applerosa/p/11509512.html (by lnexin@aliyun.com 世间草木) 此教程注意点: 适用于第 ...
- 开发钉钉和企业微信微应用
钉钉应用开发流程: 1.登录钉钉后台管理 -- 应用管理 -- 工作台 -- 自建应用 2.上传内部应用logo和名字.注意需要添加可访问域名的配置. 3.配置首页可访问地址:打包到线上的路径(注意配 ...
- java开发钉钉企业内部应用,免登授权+消息推送
1.申请账号登操作直接看文档去申请就ok了,管理员身份登录,创建微应用 地址:钉钉管理后台 - 钉钉统一身份认证 2.免登授权 CORP_ID :企业id,CORP_SECRET:企业秘钥,agent ...
- Java对接钉钉开发第三方H5微应用详细教程
文章转载自:钉钉开发第三方H5微应用入门详细教程[ISV][免登流程][授权码][HTTP回调推送][识别用户身份][获取用户信息] - 世间草木 - 博客园 (by lnexin@aliyun.co ...
- 钉钉企业内部应用获取登录用户信息
1.创建企业内部应用 首先在钉钉开放平台注册企业内部应用. 选择[企业内部开发] 创建H5微应用 填写相关信息 企业内部H5微应用创建完成 2.接口开发前准备 开发前必读 了解不同应用所能支持的能力 ...
- 钉钉扫码免登-钉钉应用内免登的实现(附仓库及Demo)
新版钉钉扫码免登及钉钉应用内免登的一次实现 (附仓库及Demo) Vue2, JDK1.8, SpringBoot2.x.x, 钉钉模块, 钉钉模块Demo, 钉钉开放平台 目录 新版钉钉扫码免登及钉 ...
- 「开发者说」多系统集成开发-企业自有系统快速上钉钉
"在2020年初那个疫情卷地百草折,又是胡天飞雪的时候,钉钉就像一夜春风带来的梨花一样带给我们希望和力量,从最初的审批.待办.日程等基础功能的使用,到后面的内部集成开发,办公效率是一步一步提 ...
- NC移动报表H5应用介绍-可以集成钉钉或者企业微信
移动报表H5应用介绍 目录 移动报表H5应用介绍... 1 1产品介绍... 2 1.1前言... 2 1.1.1简介... 2 1.1.2产品特色:... 2 1.2移动报表APP介绍... 2 1 ...
- SQL数据集支持数据参考功能,新增飞书、钉钉、企业微信平台接入支持,DataEase开源数据可视化分析平台v1.15.0发布
10月10日,DataEase开源数据可视化分析平台正式发布v1.15.0版本. 在这一版本中,DataEase对数据源和数据集两个板块的交互进行了全面优化:数据集方面,SQL数据集新增数据参考功能, ...
- 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安装 ...
最新文章
- RateLimiter 的底层实现是啥?
- [导入]用Javascript实现interface的类似功能
- windows批量添加用户
- c# 获取电脑硬件信息通用查询类[测试通过]
- 最全元素水平垂直居中方法
- Linux内存管理:知识点总结(ARM64)
- 面向对象--闭包 继承
- 【知识图谱系列】知识图谱多跳推理之强化学习
- Linux服务器自动清理缓存
- python绝对值、加法
- 寒武纪2021数字后端笔试题
- 微软应用商店打不开代码代码: 0x80131500
- HI3519 开发交流QQ群
- C++算法和数据结构之《二叉树》
- 量化金融模型ARCH模型官方例程(中文翻译版)
- mysql connstring_(最全的数据库连接字符串)connectionstring
- C语言数据的输入与输出
- 调用百度人体分析api 实现人体分析
- Mysql 数据库执行计划 EXPLAIN SELECT * FROM
- 从快递到电商,顺丰在谋划什么?
热门文章
- html在ios上不执行js,Javascript onloadedmetadata事件未在iOS设备上触发
- os_pend_multi.c
- uCOS事件相关函数代码理解
- 7-8月博乐推荐文章
- 推荐电影 历届奥斯卡获奖影片 1971-2008
- 学习帮——懒人菜谱,电饭煲可以做的菜!
- 可变卷积(Deformable ConvNets)算法的MXNet实现
- Math三点共线判断
- 关于SQLServer关键词“union all”与“order by”的矛盾
- matlab编写圆的公式,编写函数文件球半径为r的圆的面积周长 matlab