用python控制钉钉软件_Python—实现钉钉后台开发

二、实现钉钉免登流程

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

前端获取授权码code。

// 获取当前网页的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("

\t[user 属性] " + item + " : " + response.user[item] + "")

}

}

});

},

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)}`);

});

后台获取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}))

三、获取钉钉后台人员

四、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1123. 最深叶节点的最近公共祖先(递归比较子树高度)

1. 题目 给你一个有根节点的二叉树,找到它最深的叶节点的最近公共祖先。 回想一下: 叶节点 是二叉树中没有子节点的节点树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 d1如果我们假定 A 是一组节点 S…

万字综述:目标检测模型YOLOv1-v7深度解析

文|Rocky Ding源|WeThinkln大家好,我是Rocky。近年来YOLO系列层出不穷,更新不断,已经到v7版本。Rocky认为不能简单用版本高低来评判一个系列的效果好坏,YOLOv1-v7不同版本各有特色,在不同场景&a…

python手枪_Python入门,爬虫训练——枪械查询

一、效果图:二、怎么做到的? 1,首先安装requests、bs4. 这两个第三方模块。 我们按住winR 在弹出来的窗口上输入cmd,来到命令窗口,输入pip install requests、pip install bs4即可,网速慢的可以切换至国内源…

LeetCode 865. 具有所有最深结点的最小子树(递归)

1. 题目 给定一个根为 root 的二叉树,每个结点的深度是它到根的最短距离。 如果一个结点在整个树的任意结点之间具有最大的深度,则该结点是最深的。 一个结点的子树是该结点加上它的所有后代的集合。 返回能满足“以该结点为根的子树中包含所有最深的…

为什么python是解释型面向对象的语言_python为什么是面向对象的

Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在Python中创建一个类和对象是很容易的,当然如果习惯面向过程或者函数的写法也是可以的,Python并不做硬性的…

AI写剧本炸场戏剧节!DeepMind出品,马斯克看了直夸,网友看到接口悟了

文|羿阁 萧箫 发自 凹非寺源|量子位OpenAI的ChatGPT大火后,DeepMind终于也坐不住了!这次,他们推出一款名为“Dramatron”的新AI,用上它人人都可以变身编剧或作家。只需给出一句话大纲,Dramatron…

程序员面试金典 - 面试题 08.14. 布尔运算(区间动态规划)

1. 题目 给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false)、1 (true)、& (AND)、 | (OR) 和 ^ (XOR) 符号组成。 实现一个函数,算出有几种可使该表达式得出 result 值的括号方法。 示例 1: 输入: s "1^0|0|1", r…

推荐优质的深度学习公众号

人工智能行业目前已接近饱和状态,如何从内卷中脱颖而出,除了极强的自律之外,系统性的学习方法也很重要。今天给大家推荐10个原创公众号,这些公众号定期会发些高质量原创,希望可以让你更高效的学习。小白学视觉哈工大博…

SQLServer安装挂起解决方法

出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”错误。无法进行下去。 具体步骤是: 1)添加/删除程序中彻底删除sql server。 2)将没有删除的sql server目录也删除掉。 …

程序员面试金典 - 面试题 17.06. 2出现的次数(找递推规律)

1. 题目 编写一个方法&#xff0c;计算从 0 到 n (含 n) 中数字 2 出现的次数。 示例: 输入: 25 输出: 9 解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 应该算作两次)提示&#xff1a; n < 10^9来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;…

python8个程序语言_所有程序员必知--2019年最流行的8种编程语言和框架

上图是您应该在2019年根据各种&#xff0c;统计和事实寻找的8种最佳编程语言和框架的列表。在技​​术不断进步的当代世界中&#xff0c;计算机无处不在。为计算机编写程序是当前IT市场上最关键的工作配置文件之一。 您是否想过还有比这更忙的任务&#xff1f;它正在选择合适的…

ChatGPT进入百度“弱智吧”后,疯了

文 | 兔子酱无论你玩不玩贴吧&#xff0c;“弱智吧”的大名很多人应该听说过。如今弱智吧的关注人数已经超过了200万。。。不得不说&#xff0c;能将这么多“弱智”聚在一起&#xff0c;“弱智吧”撑起了后百度贴吧时代的辉煌。。。来一起感受下“弱智吧”的日常&#xff1a;能…

打印网页时背景图片的问题

当我们打印一个网页时&#xff0c;默认情况下&#xff0c;网页的背景图片是不会被打印出来的 这与我们的打印代码无关&#xff0c;需要设置IE便可&#xff0c;如下图&#xff1a; 转载于:https://www.cnblogs.com/blodfox777/archive/2008/08/05/1260860.html

程序员面试金典 - 面试题 08.02. 迷路的机器人(DFS/动态规划)

文章目录1. 题目2. 解题2.1 DFS2.2 动态规划1. 题目 设想有个机器人坐在一个网格的左上角&#xff0c;网格 r 行 c 列。 机器人只能向下或向右移动&#xff0c;但不能走到一些被禁止的网格&#xff08;有障碍物&#xff09;。 设计一种算法&#xff0c;寻找机器人从左上角移动…

python数据分析开发环境_在MAC上搭建python数据分析开发环境

最近工作转型到数据开发领域&#xff0c;想在本地搭建一个数据开发环境。自己有三年python开发经验&#xff0c;马上想到使用numpy、scipy、sklearn、pandas搭建一套数据开发环境。 ubuntu的环境&#xff0c;百度中文章比较多&#xff0c;搭建起来非常顺利。MAC环境的资料比较少…

方向盘开极品飞车9很Hapyy

一直以来&#xff0c;总是找不到一款自己心爱的游戏&#xff0c;呵呵&#xff0c;弄到个方向盘&#xff0c;开极品很HI喔。。。 虽然现在没空去玩&#xff0c;只能把方向盘放在电脑的左边&#xff0c;没事的时候只能看看了&#xff0c;不过有个期盼可以玩一把的游戏也很不错呀&…

负样本为王,百篇论文概览负采样方法的前世今生

文&#xff5c;徐澜玲源&#xff5c;RUC AI Box目录1. 研究背景1.1 什么是负采样&#xff1f;1.2 为什么需要负采样&#xff1f;1.3 为什么需要高质量的负采样&#xff1f;2. 负采样方法分类梳理2.1 静态负采样2.2 强负例采样2.3 对抗式负采样2.4 基于图的负采样2.5 引入额外信…

程序员面试金典 - 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)

1. 题目 给定一份单词的清单&#xff0c;设计一个算法&#xff0c;创建由字母组成的面积最大的矩形&#xff0c;其中每一行组成一个单词(自左向右)&#xff0c;每一列也组成一个单词(自上而下)。 不要求这些单词在清单里连续出现&#xff0c;但要求所有行等长&#xff0c;所有…

python mysql操作封装库_python封装mysq操作,进行数据库的增删改

python操作mysql进行封装&#xff0c;封装的好处我就不提了&#xff0c;以下是我做项目时的一个封装&#xff0c;大家可以根据实际需要进行自己的一个封装我封装的内容&#xff1a;1.数据库的配置文件2.获取数据配置文件的地址3.连接数据库的操作4.操作mysql的语句5.调用mysql的…

SQL2000数据库中删除“坏表”的方法

SQL2000数据库中删除“坏表”的方法在一些网站或者软件系统中&#xff0c;由于安全或者程序异常等问题&#xff0c;可能会在SQL Server 2000中造成一个异常问题&#xff1a;在企业管理器中打开数据库发现有一些“坏表”&#xff0c;即无法使用&#xff0c;也无法正常删除。其原…