企业版移动端钉钉对接

企业版手机端钉钉对接:
作为后台我把钉钉理解成了一个特殊的浏览器。
dingding文档https://open-doc.dingtalk.com/?spm=a219a.7629140.0.0.o6fMoq 这个文档的开发者接入里有对应的接口,也就是你访问对应url,dingding会回复对应的信息,操作dingding控件的接口。
第一次dingding对接一头雾水,总结了几个问题:
怎么能够操作手机上的dingding软件呢?
dingding提供了一个JSAPI来操作dingding软件,而这个JSAPI我把它理解成自己封装的js代码,他需要对应的框架提供支持,这个框架就是dingtalk.js(文档里都有)。也就是说dingding如果先发起一个请求到后台,如果后台回复对应的JSAPI就可以操作dingding了。


JSAPI:
操作dingding分成dd.config dd.ready dd.error三个部分,而jsapi是放到dd.ready里并且使用jsapi需要先用dd.config来进行签名校验。

dingding提供了很多个接口在API列表总览里


免密登陆公司的后台服务器的过程:

1.在dingding后台创建应用,配置跳转地址/dlogin/
2.自己的服务器后台接收到请求,先利用自己封装的sdk获取前端校验需要使用的签名信息假设叫他config,将config添加到H5页面dlogin.html上,返回dlogin.html。在返回的dlogin.html中 ,页面上要加载dingtalk,目的是使用JSAPI:先利用dd.config完成签名校验,这样才能使用dd.ready里面的jsapi,然后用dd.runtime.permission.requestAuthCode获取code的值。
3.如果通过dlogin.html里嵌入的dd.runtime.permission.requestAuthCode获取到code值后,那么后台就可以拿着code发送get请求 https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
来获取用户在dingding服务器里存储的信息了,可是我们自己的服务器后台怎么拿到这个url的code呢,可以让成功获得code的信息的dd.runtime.permission.requestAuthCode在成功的情况下向后台发送 /user/getuserinfoaccess_token=ACCESS_TOKEN&code=CODE 请求,后台就可以拿到这个url的后半部分了。在重新组装就可以了。
4.后台拿到url之后就可发送请求,获得用户的信息了,在自己的服务器上首先要添加ding_id和is_exist 两个字段,在请求的返回值当中就有ding_id和is_exist的信息,来判断哪个用户登录了。之后就是正常的登陆和返回和跳转到首页了。
企业版移动端钉钉对接_第1张图片


python的dingding的sdk 主要目的是组织参数,生成签名信息:
1,在init中应该有需要的参数,在创建应用的时候就获取的agentId,cropId,cropSecret
2,获取access_token: 通过get请求 https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect
得到access_token
3,获取ticket: 通过get请求 https://oapi.dingtalk.com/get_jsapi_ticket?access_token=ACCESS_TOKE
得到ticket
4,根据参数ticket,nonceStr(随机数),timeStamp(时间戳),url应用设置访问的url,生成signature:jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s根据顺序组成字符串,sha1加密,转换16进制。
实际在dd.config校验是需要的参数有nonceStr, corpId,timestamp,signature,agentId

企业版移动端钉钉对接_第2张图片


发送dingding消息:当有请假信息或者有审批信息的状态时,需要给相关的人员发送dingding消息。
可以用发送企业消息接口 https://oapi.dingtalk.com/message/send?access_token=ACCESS_TOKEN
这个接口支持多种数据类型text、image、voice、file、link、OA、markdown消息类型 文档都有说明。
1,组织参数,2,组织url,3,发送请求。

你可能感兴趣的:(python)