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 ...
随机推荐
- Angular 彻底解决 Dropdown 在 Safari 上无法自动关闭的问题
之前在 Safari 上用 focus 事件来实现 Dropdown 下拉菜单,结果在 iOS 上不兼容. 尝试了 MDN 和 stack over flow 上各种奇技淫巧,然而在 iOS 上全都败 ...
- IT兄弟连 HTML5教程 “无意义”的HTML元素div和span
HTML只是赋予内容的手段,大部分HTML标签都有其意义(例如,标签a创建链接,标签h1创建标题等),然而div和span标签似乎没有任何内容上的意义,听起来就像一个泡沫做成的锤子一样无用.但实际上, ...
- Java开发之使用websocket实现web客户端与服务器之间的实时通讯
使用websocket实现web客户端与服务器之间的实时通讯.以下是个简单的demo. 前端页面 <%@ page language="java" contentType=& ...
- 字节跳动——IT技术工程师面试题
.自我介绍 .项目介绍 .争对个人项目进行提问 .场景模拟 .1如何知道用户的指定视频(类似于QQ发视频)的服务是正常的 .使用appum进行自动化测试 .使用bat脚本获取进程状态,然后定时发送em ...
- Audit Object Changes 审核对象更改
Important 重要 The Audit Trail module is not supported by the Entity Framework ORM in the current vers ...
- 发送RCS 消息摘录相关成功log
//11-25 16:48:09.612102 2175 2726 I BugleDataModel: PendingMessagesProcessor: process from InsertN ...
- OPENGL 坐标轴转换
坐标轴 平移 旋转 缩放 重置坐标轴 矩阵操作 示例 1.坐标轴 OpenGL 使用的右手坐标系,从正面看原点,逆时针旋转被认为是正旋转. x轴:从左到右 y轴:从底部向上 z轴:从屏幕背向朝向前方 ...
- 基于Python和Xtrbackup的自动化备份与还原实现
xtrabackup是一个MySQL备份还原的常用工具,实际使用过程应该都是shell或者python封装的自动化脚本,尤其是备份.对还原来说,对于基于完整和增量备份的还原,还原差异备份需要指定增量备 ...
- java8的捕获多个异常的一个写法
这是按intellij idea的提示知道的, 可以写成 catch(xxxException | yyyException | zzzException e){ } 这样的形式,对几个不同的异常使用 ...
- 搭建Harbor
搭建Harbor 一.安装准备 二.安装docker-ce 三.安装docker-compose 四.安装harbor 5.1下载安装程序 5.2配置harbor.yml 5.3运行install.s ...