钉钉开发笔记

Posted {抠得儿:Coder}

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了钉钉开发笔记相关的知识,希望对你有一定的参考价值。

钉钉开发分为: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

 

 

 

 

 

以上是关于钉钉开发笔记的主要内容,如果未能解决你的问题,请参考以下文章

钉钉开发笔记 签名验证问题的处理

钉钉开发笔记MySQL的配置

钉钉作弊软件开发者,被判 5 年半,为什么提供「虚拟定位」会被判这么久?...

zabbix3.4.4钉钉机器人报警图文笔记

钉钉应用开发新手入门求助

怎样开发钉钉上的应用