本人主要从事移动端和PC端的开发,因此,本笔记主要记录在这些问题中碰见的问题和困难,但愿对你们有所帮助!web
开发流程:算法
1、免登流程图 点击查看步骤api
开发者在调用开放平台接口前须要经过CorpID和CorpSecret获取AccessToken。获取AccessToken的方法是向 服务器
https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect GET请求。网站
获取jsapi_ticket加密
企业在使用微应用中的JS API时,须要先从钉钉开放平台接口获取jsapi_ticket生成签名数据,并将最终签名用的部分字段及签名结果返回到H5中,JS API底层将经过这些数据判断H5是否有权限使用JS API。url
请求说明spa
Https请求方式:GET3d
https://oapi.dingtalk.com/get_jsapi_ticket?access_token=ACCESS_TOKENcode
开发者在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对应的用户信息。**此接口只用于免登服务中用来换取用户信息**
请求说明
Https请求方式: GET
https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE