python项目对接钉钉SDK的实现?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
DINGTALK_CORP_ID =,“重点:企业应用ID" #,钉钉微应用 时间=DINGTALK_APP_KEY “微应用APP_KEY" 时间=DINGTALK_CORP_SECRET “微应用SERCRET" #,钉钉移动应用(扫码登录),在移动应用接入菜单里配置 时间=DINGTALK_APP_ID “移动应用APP_ID" 时间=DINGTALK_APP_SECRET “移动应用APP_SECRET" #,钉钉aes加密(随机) 时间=DINGTALK_AES_TOKEN “43位字符串,a-zA-Z0-9中生成“ 时间=DINGTALK_TOKEN “字符串随便填“
<强>一。第三方网络网站扫码登录1。流程强>
钉钉扫码→判断是否公司员工→登录
关于web系统的两种接入方式,都只能获取到用户的钉钉身份,并不能获取到用户是否在企业中
<强>解决方法:强>
<强>批量同步>强钉钉人员信息到数据库,登录后匹配数据库,新进员工通过<强>钉钉回调强>同步到数据库,回调未生效人工审核后<强>手动更新强>数据库
由于钉钉开发文档读的不够仔细导致调试频繁出错,所以开发流程我简单说,把细节放大
前端导入<强>钉钉剧本文件>强开发扫码页面
& lt; https://www.yisu.com/zixun/script src="//g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js "> 脚本> <>脚本 var url=" http://erp.vaiwan.com/api/v1.0/ding_test "; var goto=encodeURIComponent url (" https://oapi.dingtalk.com/connect/oauth3/sns_authorize?appid=dingoadwjj1iszubeh9rnf&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=" +); var obj=DDLogin ({ id:“login_container”, goto:转到, 风格:“边境:没有;background - color: # FFFFFF;”, 宽度:“365”, 高度:“400” }); var hanndleMessage=函数(事件){ var=event.origin起源; 控制台。日志(“起源”,event.origin);//判断是否来自ddLogin扫码事件。 如果(起源==" https://login.dingtalk.com ") {//拿到loginTmpCode后就可以在这里构造跳转链接进行跳转了 var loginTmpCode=event.data; 控制台。日志(“loginTmpCode loginTmpCode); 如果(loginTmpCode) { 让uri=" https://oapi.dingtalk.com/connect/oauth3/sns_authorize?appid=dingoadwjj1iszubeh9rnf&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=" + url + " &loginTmpCode=" + loginTmpCode;//跳转 的位置。href=uri; } } }; 如果(typeof窗口。addEventListener !=岸ㄒ濉?{ 窗口。addEventListener(‘消息’,hanndleMessage假); }如果(typeof窗口。attachEvent !=岸ㄒ濉?{ 窗口。attachEvent (onmessage, hanndleMessage); } 脚本>
配置扫码后跳转页面(<强>就是第一步goto参数里的url 强>),钉钉会自动在跳转页面路由后添加代码<代码> 代码>和<代码> 代码>状态参数
拿到代码请求后端接口
& lt; script src=癶ttps://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"祝辞& lt;/script> & lt; script>//才能,location.search:,“?代码=bb42ec66ed5…,状态=STATE" let 才能;code =, location.search.split(”和“)[0].split (“=? [1]; . ajax({美元才能 ,,,类型:“post", ,,,url: & # 39; http://erp.vaiwan.com.cn/api/v1.0/getinfo& # 39; ,,,数据:{ ,,,,,“code":代码 ,,,}, ,,,成功:功能(数据){ ,,,,,console.log(数据) ,,,} })才能 & lt;/script>
后端用appid和appsecret获取access_token
import 请求 得到dingtalk.client import  SecretClient class GetInfoByCode(对象): def 才能__init__(自我): ,,,self.url =,“https://oapi.dingtalk.com/sns" def 才能get_access_token(自我): ,,,resp =, requests.get ( ,,,,,url=self.url +,“/gettoken", ,,,,,params=dict (appid=DINGTALK_APP_ID, appsecret=DINGTALK_APP_SECRET) ,,,) ,,,resp =, resp.json () ,,,return 职责(“access_token")python项目对接钉钉SDK的实现