钉钉开发分为:1、移动客户端。2、PC端。3、服务端。三个平台的开发。
1、移动端:面对钉钉手机用户和企业用户。
2、同上主要面向PC端的用户和企业。
3、服务端,用于用户和企业内部管理的平台方向,例如OA网站。
本人主要从事移动端和PC端的开发,所以,本笔记主要记录在这些问题中遇见的问题和困难,希望对大家有所帮助!
开发流程:
一、免登流程图 点击查看步骤
二、步骤详细:
步骤1:获取CorpID、CorpSecret(在企业钉钉微应用设置中获取)
步骤2:获取AccessToken。
开发者在调用开放平台接口前需要通过CorpID和CorpSecret获取AccessToken。获取AccessToken的方法是向
https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect GET请求。
步骤3:获取jsapi_ticket(服务器中调用,用以生成可用的ticket)点击查看官方文档
获取jsapi_ticket
企业在使用微应用中的JS API时,需要先从钉钉开放平台接口获取jsapi_ticket生成签名数据,并将最终签名用的部分字段及签名结果返回到H5中,JS API底层将通过这些数据判断H5是否有权限使用JS API。
请求说明
Https请求方式:GET
https://oapi.dingtalk.com/get_jsapi_ticket?access_token=ACCESS_TOKEN
步骤4:签名生成算法
开发者在web页面使用钉钉容器提供的jsapi时,需要验证调用权限,并以参数signature标识合法性
签名生成的规则:
List keyArray = sort(noncestr,timestamp,jsapi_ticket,url);
String str = assemble(keyArray);
signature = sha1(str);
参与签名的字段包括在上文中获取的jsapi_ticket,noncestr(随机字符串,自己随便填写即可),timestamp(当前时间戳,具体值为当前时间到1970年1月1号的秒数),url(当前网页的URL,不包含#及其后面部分,需要对url中query部分做一次urldecode)。例如:
noncestr=Zn4zmLFKD0wzilzM
jsapi_ticket=mS5k98fdkdgDKxkXGEs8LORVREiweeWETE40P37wkidkfksDSKDJFD5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcKIDU8l
timestamp=1414588745
url=//open.dingtalk.com
注意:若页面url为http://abc.com?url=http%3A%2F%2Fabc.com%2somewhere,则用于生成签名的url应对query部分做一次urldecode,正确结果应为http://abc.com?url=http://abc.com/somewhere
步骤1. sort()含义为对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)
步骤2. assemble()含义为根据步骤1中获的参数字段的顺序,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串
步骤2. sha1()的含义为对在步骤2拼接好的字符串进行sha1加密。
步骤5:获取免登用户信息 击查看官方文档
通过CODE换取用户身份
企业应用的服务器在拿到CODE后,需要将CODE发送到钉钉开放平台接口,如果验证通过,则返回CODE对应的用户信息。**此接口只用于免登服务中用来换取用户信息**
请求说明
Https请求方式: GET
https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE