二、实现钉钉免登流程

免登流程分四步:1、前端获取钉钉免登授权码code;2、后端获取access_token;3、使用授权码code和access_token换取用户userid;4、通过access_token和userid换取用户详情userinfo。

前端获取授权码code。

<script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.7.13/dingtalk.open.js"></script>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
// 获取当前网页的url:http://ding-web.lnexin.cn/?corpid=ding46a9582af5b7541b35c2f4657eb6378f
var currentUrl = document.location.toString()
$("#url").append(currentUrl)
// 解析url中包含的corpId
var corpId = currentUrl.split("corpid=")[1];
$("#corpId").append(corpId) // 钉钉sdk初始化:dd.ready参数为回调函数,在环境准备就绪时触发,jsapi的调用需要保证在该回调函数触发后调用,否则无效。
dd.ready(function () {
// 使用SDK 获取免登授权码
dd.runtime.permission.requestAuthCode({
corpId: 'dingovyrjosjwioznxqn',
onSuccess: function (result) {
alert(JSON.stringify(result));
var code = result.code;
//$.get("http://49.232.56.68:8006/get/user",'code='+info.code,function(response){
$.get("http://49.232.56.68:8006/get/user?code=" + code, function (response) {
var response = JSON.parse(response)
// 下面的业务根据自己的需求来写
if (response.user) {
for (item in response.user) {
$("#result").append("<li>\t[user 属性] " + item + " : " + response.user[item] + "</li>")
}
}
});
},
onFail: function(err) {
alert('fail: ' + JSON.stringify(err)); //处理失败的情况
},
});
}); // 如果没有走ready方法的话会走error方法。
// dd.error(function(error){
dd.error((error) => {
alert('dd error: ' + JSON.stringify(error));
alert(`dd error: ${JSON.stringify(error)}`);
});
</script>

后台获取access_token,然后获取userId,最后换取userInfo。

class AdminUser(BaseHandler):
def get(self):
info = self.request.arguments
code = self.get_argument("code", None) # 获取access_token
AppKey = "ding4itesoimljq9ksmz"
AppSecret = "BW8XFsbesRJdOjmt_peYOQBTwVWUkQKONxZ2_2_fXhBQjmgq2Q6tRWrq867l84ht"
url = "https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}".format(AppKey, AppSecret)
resp = requests.get(url)
resp = resp.json()
access_token = resp["access_token"] # 获取userId
url1 = "https://oapi.dingtalk.com/user/getuserinfo?access_token={0}&code={1}".format(access_token, code)
resp1 = requests.get(url1)
resp1 = resp1.json() # 获取userInfo
url2 = "https://oapi.dingtalk.com/user/get?access_token={0}&userid={1}".format(access_token, resp1["userid"])
resp2 = requests.get(url2)
resp2 = resp2.json()
return self.write(json.dumps({"status": "success", "userinfo": resp2}))

授权码code是每次请求都不一样,单次请求的数据5分钟有效,所以没必要缓存,直接用一次调一次。 正常情况下access_token有效期为7200秒,有效期内重复获取返回相同结果,并自动续期。缓不缓存根据自己需要吧。
参考:https://hasfun.cn/2019/03/17/dingdingdev/https://www.jianshu.com/p/b02eea9f09ffhttps://www.anji66.net/article/id/143.htmlhttps://www.cnblogs.com/zuiwoshanlin/p/9481539.html

三、获取钉钉后台人员

https://hacpai.com/article/1569062348311

四、

https://blog.csdn.net/weixin_42336574/article/details/95485622

https://blog.csdn.net/weixin_42042680/article/details/86661387

https://blog.csdn.net/qq_26608423/article/details/90510923

https://blog.csdn.net/Jason847/article/details/75007140

https://www.cnblogs.com/applerosa/p/11509512.html

https://dingtalk-sdk.readthedocs.io/zh_CN/latest/client/api/calendar.html

https://ding-doc.dingtalk.com/doc.htm?docId=106834&docType=1#/serverapi2/gh60vz

https://oa.dingtalk.com/index.htm?lwfrom=20180929152232431233#/login

https://gitee.com/liu993083028/ding-server

Python—实现钉钉后台开发的更多相关文章

  1. 怎么用python 3 开发钉钉群机器人

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Python绿色通道 PS:如有需要Python学习资料的小伙伴可以加 ...

  2. 钉钉开发中post异步调用问题

    最近项目上在做钉钉开发中,经常会遇到使用post方式调用钉钉内部的方法(微信也有一样),这里涉及到跨域的post调用,但跨域一般都是用jsonp格式,而这个格式只支持get方式.尝试了挺多方法都没有返 ...

  3. 钉钉企业应用C#开发笔记之一(免登)

    关于钉钉 钉钉是阿里推出的企业移动OA平台,本身提供了丰富的通用应用,同时其强大的后台API接入能力让企业接入自主开发的应用成为可能,可以让开发者实现几乎任何需要的功能. 近期因为工作需要研究了一下钉 ...

  4. Java钉钉开发_01_开发前的准备

    源码已上传GitHub:传送门 一.准备事项 1.1  一个能在公网上访问的项目: 参见:Java微信开发_02_本地服务器映射外网 1.2  一个钉钉账号 去注册 1.3 创建一个应用 登录钉钉后台 ...

  5. 钉钉开发获取APPKEY, APPSECRET, CorpId和SSOSecret

    首先用自己的钉钉账号注册一个企业: https://oa.dingtalk.com/index.htm 一.获取应用APPKEY及APPSECRET方法: 1.登录钉钉开放平台创建应用: https: ...

  6. 钉钉开发入门,微应用识别用户身份,获取用户免登授权码code,获取用户userid,获取用户详细信息

    最近有个需求,在钉钉内,点击微应用,获取用户身份,根据获取到的用户身份去企业内部的用户中心做校验,校验通过,相关子系统直接登陆; 就是在获取这个用户身份的时候,网上的资料七零八落的,找的人烦躁的很,所 ...

  7. zabbix 利用python脚本实现钉钉告警

    Zabbix 利用python脚本实现钉钉告警 1.安装python3.6环境 2.创建python脚本 cd local/zabbix-4.0.3/share/zabbix/alertscripts ...

  8. 【JavaWeb开发】初步实现网站应用钉钉扫码登录

    http://blog.csdn.net/baofeidyz/article/details/59059379 版权声明:转载请注明我的个人微信平台 暴沸 目录(?)[+] 写在前面:如果你还不知道钉 ...

  9. 使用python对mysql主从进行监控,并调用钉钉发送报警信息

    1.编写python的监控脚本 A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常 B.进行两个状态值的判断 C.进行调取钉钉机器人,发送消息 2.设置定时任务进行脚本运行 cro ...

随机推荐

  1. Ubuntu18.04搭建测试环境

    前言 说一下我的情况,之前由于我的云服务器数据库的root账号密码123456太简单,而在之前的博客中也泄露出了我的云服务器的IP地址,导致有人远程连接我的数据库,删除了项目数据库里的数据只剩下WAR ...

  2. java基础 - 锁

    ------------------------ 参考: https://www.cnblogs.com/hustzzl/p/9343797.html https://blog.csdn.net/qq ...

  3. 周末DHU友谊赛(半日游)感想

    DHU的校园挺好的啊,感觉教学楼啊,整体环境啊比咱学校好上一些,和大家一起出来有些春(冬)游的意味,食堂也是十分的宽敞,座位好多! 吐槽shu的食堂座位到饭点明显太少,食堂品类好多,shu的吃多了感觉 ...

  4. Spring中常见的设计模式——委派模式

    一.委派模式的定义及应用场景 委派模式(Delegate Pattern)的基本作用是负责任务的调用和分配,跟代理模式很像,可以看做特殊情况下的静态的全权代理,但是代理模式注重过程,而委派模式注重结果 ...

  5. C lang:Pointer and Array

    Xx_Introduction Point and Array germane. Xx_Code #include<stdio.h> #define SIZE 4 int main(voi ...

  6. centos_redis 安装脚本

    #!/bin/bash # change to root echo "start to install build env..." sudo yum groupinstall &q ...

  7. JSP的介绍

    JSP概念 JSP全称java server page,中文含义为java服务端页面.对于jsp的理解需要和另外几个相似的概念连接起来:Html和Servlet.常规的html作为一个静态文本传输,具 ...

  8. 如何用Jpype创建HashMap和ArrayList

    近期在Python中使用java语言的时候有涉及到如何创建HashMap和ArrayList等容器,最开始的疑惑是,java里面的容器是有泛型做类型检测的,而在python中却没有泛型这个说法,那么如 ...

  9. 011.Kubernetes二进制部署kube-scheduler

    一 部署高可用kube-scheduler 1.1 高可用kube-scheduler介绍 本实验部署一个三实例 kube-scheduler 的集群,启动后将通过竞争选举机制产生一个 leader ...

  10. ubuntu 查看端口被占用并删除端口

    做网络的同学,估计会经常用到这个功能,这里就做一个记录吧. 首先查看特定端口是占用了: sudo netstat -nplt 其次要删除特定端口并查看: kill -9 pid_num sudo ne ...