python项目对接钉钉项目对接钉钉SDK的实现的实现
主要介绍了python项目对接钉钉SDK的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
钉钉SDK
对接sdk还是遇到不少问题的
钉钉python版SDK文档地址:https://dingtalk-sdk.readthedocs.io/zh_CN/latest/
钉钉官方服务端文档:https://open-doc.dingtalk.com/microapp/serverapi2
为了避免调试出现不必要的参数错误,前期钉钉配置要做好,血和泪的教训
准备好下面几个参数
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 = "字符串随便填"
一一. 第三方第三方web网站扫码登录网站扫码登录1. 流程流程
钉钉扫码—>判断是否公司员工—>登录
关于web系统的两种接入方式,都只能获取到用户的钉钉身份,并不能获取到用户是否在企业中
解决方法:解决方法:
批量同步批量同步钉钉人员信息到数据库,登录后匹配数据库,新进员工通过钉钉回调钉钉回调同步到数据库,回调未生效人工审核后手动更新手动更新数据库
由于钉钉开发文档读的不够仔细导致调试频繁出错,所以开发流程我简单说,把细节放大
前端导入钉钉钉钉scrpit文件文件开发扫码页面
<script src="//g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script>
<script>
var url="http://erp.vaiwan.com/api/v1.0/ding_test";
var goto = encodeURIComponent('https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=dingoadwjj1iszubeh9rnf&response_type=code&scope=snsapi_login&state=STATE&redirect_uri='+url);
var obj = DDLogin({
id:"login_container",
goto: goto,
style: "border:none;background-color:#FFFFFF;",
width : "365",
height: "400"
});
var hanndleMessage = function (event) {
var origin = event.origin;
console.log("origin", event.origin);
//判断是否来自ddLogin扫码事件。
if( origin == "https://login.dingtalk.com" ) {
//拿到loginTmpCode后就可以在这里构造跳转链接进行跳转了
var loginTmpCode = event.data;
console.log("loginTmpCode", loginTmpCode);
if(loginTmpCode){
let uri="https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=dingoadwjj1iszubeh9rnf&response_type=code&scope=snsapi_login&state=STATE&redirect_uri="+url+"&loginTmpCode="+loginTmpCode;
// 跳转
location.href = uri;
}
}
};
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('message', hanndleMessage, false);
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onmessage', hanndleMessage);
}
</script>
配置扫码后跳转页面(就是第一步就是第一步goto参数里的参数里的url),钉钉会自动在跳转页面路由后添加code和state参数
拿到code请求后端接口
<script src="https://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<script>
// location.search: "?code=bb42ec66ed5...&state=STATE"
let code = location.search.split("&")[0].split("=")[1];
$.ajax({
type:"post",
url:'http://erp.vaiwan.com.cn/api/v1.0/getinfo',
data:{
"code":code
},
评论1