钉钉二次开发
这一篇是作为汇总页面提出来的,主要记录在钉钉上进行二次开发的一些小点。
1.扫码登录
扫码登录可能是一个最简单的入门应用了吧,其实原理和微信的扫码登录差不多的。有两种方式,一种是使用官网自带的登录页面,另一种是使用 js sdk 构造需要的二维码,然后进行跳转,最后都会跳转到 redirect_uri 定义的
url上面去。
(1) 获取扫码登陆的 appid、appscret。
2.获取用户详细信息
获取用户信息,主要通过user/get请求,使用access_token和userid作为参数。如何获取userid?有一个接口叫getUseridByUnionid,根据unionid获取用户的userid。那么如何获取unionid呢?有一个扫码登录的过程getuserinfo_bycode,可以通过临时码code获取用户的unionid,如何获取code,可以通过 官网说明 可以获取到线索。
获取用户信息的时候,还有一个需要注意的就是,要在钉钉开放平台的后台页面的H5维应用的接口权限页面->打开相应的接口权限。
打开:”邮箱等个人信息权限“、“通讯录个人信息读权限”、“成员信息读权限”等,否则就会出现 403 错误。
在调用的时候,可以通过返回的权限信息,开通相应的权限:requiredScopes=[qyapi_get_member]
1.基础权限
2.postman-自动接口测试(jenkins、钉钉、newman)
3.dingtalk-api-sample
4.获取用户详情-在线调试
5.获取用户详情
6.API Explorer
问题
(1) 访问ip不在白名单之中
第一种方法:失败
解决了用户权限的问题,使用postman调试接口的时候,总是提示ip地址不在白名单中。
1 | { |
按照提示,我找到了添加ip的方法
添加ip的路径为:登录开发者后台-基本信息-开发信息旧版-找到该应用使用的Corpsecret值,点击设置修改ip;如果当前账号按照上述路径查看不到Corpsecret,需要该企业主管理员账号查看并修改ip。
我打开了我的管理后台,确实看不到ip地址,那我应该不是企业主管理员。
和企业管理员沟通之后,他登录后台,然后在相应的位置,有一个修改按钮。
点击修改按钮,这里有一个服务器公网出口IP白名单。企业管理员的这个界面刚开始不一样,有一个部门负责人选项,把我设置为负责人之后,我用自己的账号登录后台,这个地方就可以修改了。
还有一点需要注意的是,在钉钉的管理后台界面,也要设置通讯录管理功能,才能选择关联部门。
第二种方法:最终解决方案
设置了上面的应用之后,还是不行,后来,我打开了H5微应用,然后点击了找到了相应的扫码登录应用->基本信息->修改->服务器出口IP地址,也可以修改服务器的出口ip。如果ip没有被使用过的时候,就需要可以添加修改相应的出口ip,在进行接口权限测试的时候就可以了。
如果你添加的ip地址,已经被别人添加过了,而别人没有解除,可能就不能添加,我就遇到了这样的问题。那只能按他的提示,进行操作了。
不能填入具体的ip,那我就用一个星号代替,比如:8.8.8.*,这样可以添加上ip白名单,这样就可以进行本地开发测试了。
3.钉钉获取日志信息
(1) 钉钉获取日志时,start_time和end_time需要时毫秒,如果是填入秒查出的内容是空。
问题
(1) Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/taobao/api/TaobaoRequest
在使用钉钉的接口的时候,本地调试没有问题,总是在远程出现错误。
下面的代码其实很简单,没有任何的难点,但是总是执行不了:logger.error(“kkkkkkkkk”),所以很莫名奇妙。
1 | public static JSONObject httpGet(String url){ |
最后才发现,虽然这个方法里面没有调用钉钉的接口,但是在这个类的头部,出现了
1 | import com.dingtalk.api.DefaultDingTalkClient; |
本地之所以没有报错,是因为将lib放到了resource目录下,但是在打包的时候,maven并没有将resource中的lib打包到类路径中,所以远程服务器部署的时候,就会找不到这个类库。
1.maven将本地jar打包到war包或者jar包
2.Content type ‘text/plain;charset=UTF-8’ not supported
3.java.lang.ClassNotFoundException: com.taobao.api.ApiException解决
4.导入淘宝开放平台的jar包以后,编译不报错,运行报错java.lang.NoClassDefFoundError: com/taobao/api/Default
5.钉钉SDK包导入项目踩坑
4.创建审批流
要调用钉钉的审批模板创建方法,需要有审批的权限,在接口权限->高级权限下,申请审批权限。
调用钉钉的审批操作有两种方式
(1) 第一种就是使用已经在钉钉的审批模板后台手动创建了审批,在发起审批的时候,只需要调用相应的模板id,然后传入相应的参数就好了。
(2) 第二种,就是通过接口先创建一个模板,然后调用模板进行审批。这两者有什么样的限制,其实官方说的不是很明白。
接口:https://oapi.dingtalk.com/topapi/process/save?access_token=<access_token>
参数:
1 | { |
返回值:
1 | { |
1.企业调用此接口可以为企业创建或者更新工作流模板。