python项目对接钉钉SDK的实现

  

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。流程

钉钉扫码→判断是否公司员工→登录

 python项目对接钉钉SDK的实现

 python项目对接钉钉SDK的实现

关于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 ),钉钉会自动在跳转页面路由后添加代码<代码> 和<代码> 状态参数

 python项目对接钉钉SDK的实现

拿到代码请求后端接口

& 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的实现