Python—实现钉钉后台开发
二、实现钉钉免登流程
免登流程分四步: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/b02eea9f09ff,https://www.anji66.net/article/id/143.html,https://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—实现钉钉后台开发的更多相关文章
- 怎么用python 3 开发钉钉群机器人
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Python绿色通道 PS:如有需要Python学习资料的小伙伴可以加 ...
- 钉钉开发中post异步调用问题
最近项目上在做钉钉开发中,经常会遇到使用post方式调用钉钉内部的方法(微信也有一样),这里涉及到跨域的post调用,但跨域一般都是用jsonp格式,而这个格式只支持get方式.尝试了挺多方法都没有返 ...
- 钉钉企业应用C#开发笔记之一(免登)
关于钉钉 钉钉是阿里推出的企业移动OA平台,本身提供了丰富的通用应用,同时其强大的后台API接入能力让企业接入自主开发的应用成为可能,可以让开发者实现几乎任何需要的功能. 近期因为工作需要研究了一下钉 ...
- Java钉钉开发_01_开发前的准备
源码已上传GitHub:传送门 一.准备事项 1.1 一个能在公网上访问的项目: 参见:Java微信开发_02_本地服务器映射外网 1.2 一个钉钉账号 去注册 1.3 创建一个应用 登录钉钉后台 ...
- 钉钉开发获取APPKEY, APPSECRET, CorpId和SSOSecret
首先用自己的钉钉账号注册一个企业: https://oa.dingtalk.com/index.htm 一.获取应用APPKEY及APPSECRET方法: 1.登录钉钉开放平台创建应用: https: ...
- 钉钉开发入门,微应用识别用户身份,获取用户免登授权码code,获取用户userid,获取用户详细信息
最近有个需求,在钉钉内,点击微应用,获取用户身份,根据获取到的用户身份去企业内部的用户中心做校验,校验通过,相关子系统直接登陆; 就是在获取这个用户身份的时候,网上的资料七零八落的,找的人烦躁的很,所 ...
- zabbix 利用python脚本实现钉钉告警
Zabbix 利用python脚本实现钉钉告警 1.安装python3.6环境 2.创建python脚本 cd local/zabbix-4.0.3/share/zabbix/alertscripts ...
- 【JavaWeb开发】初步实现网站应用钉钉扫码登录
http://blog.csdn.net/baofeidyz/article/details/59059379 版权声明:转载请注明我的个人微信平台 暴沸 目录(?)[+] 写在前面:如果你还不知道钉 ...
- 使用python对mysql主从进行监控,并调用钉钉发送报警信息
1.编写python的监控脚本 A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常 B.进行两个状态值的判断 C.进行调取钉钉机器人,发送消息 2.设置定时任务进行脚本运行 cro ...
随机推荐
- UWP GridView切换数据时界面闪动
在选择数据时,比如1-10集,和11-20集切换时,GridView需要切换对应的数据,但是会发生界面闪动. 这是默认的Item Transition导致的. 可以去掉默认的转换效果. <Gri ...
- Selenium(九):Xpath选择器
1. Xpath选择器 1.1 Xpath语法简介 前面我们学习了CSS选择元素. 大家可以发现非常灵活.强大. 还有一种灵活.强大的选择元素的方式,就是使用Xpath表达式. XPath (XML ...
- 建造者模式-C#改良实现
区分网上已有的一般建造者模式实现,个人觉得实现太单一了,自己google查了一些好的实现,挑了其中比较适合的,做个笔记. # region 标准Builder模式实现 // 产品 class Tele ...
- Python 3.7的安装过程
百度云Pyhton3.7-32位安装包: 链接:https://pan.baidu.com/s/1P5Egkl2KNt_DjhiFaDzqsg提取码:5171 百度云Pyhton3.7-64位安装包: ...
- Dynamics CRM中的地址知多D?
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复169或者20151105可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! CRM中的地址以前不是很了解,定 ...
- 4、netty第三个例子,建立一个tcp的聊天的程序
代码基于第二个例子,支持多客户端的连接,在线聊天. 主要思路: 连接建立时,在服务器端,保存channel 对象,当有新的客户端加入时,遍历保存的channel集合,向其他客户端发送加入消息. 当一个 ...
- SQL Server 之事务执行,让语句在事务中执行
BEGIN TRAN BEGIN TRY DELETE FROM dbo.表 INSERT INTO dbo.表( Id, 字段....) SELECTId,字段... F ...
- 使用shell脚本查看数据库负载情况
原创 Oracle 作者:jeanron100 时间:2014-05-23 08:56:26 8912 2 平时在查看数据库的问题时,会有种迷茫的感觉,如果没有任何人反馈问题,基本上没有主动查找问 ...
- MySQL——my.cnf参数设置说明
以下为个人总结的MySQL配置文件参数说明,如有错误,烦请大佬们留言指正,本人将第一时间修改.2019-12-10 12:32:08 [mysqld] server- # Mysql唯一标识,一个集群 ...
- 如何使用第三方ui库vant-weapp
如何使用第三方ui库vant-weapp 1==>创建文件夹demo 2==> 在小程序 中打开 注意 要先在小程序中打开 如果要想在小程序的开发工具中打开某一个 文件夹 要么是空文件夹 ...