天天看点

钉钉E应用接口学习笔记

钉钉接口入门随笔

最近因为新的要求,用kettle处理了数据后要学习钉钉接口做一个免登录和消息收发的后台。因此,这里就把学到的入门级知识发在微博上,一个是为了今后用到了还可以拿过来继续看,再者希望能对看到这篇博客的人给与一点小小的帮助。

首先,我觉得钉钉开发最重要的还是 官网上的api(API地址点这里),里面的内容非常全。各种写法什么的还是要以官方写法为主。

首先的工作还是环境搭建。钉钉开发需要的工具有:myeclipse/eclipse、maven、如果你还想要前端开发的话还需要阿里自配的E应用开发环境。

配置好环境以后,我们就可以开始愉快的学习之旅了(哭哭)。首先我还是建议大家从开发文档的快速入门开始,一步一步地将系统自带的"helloword"输出出来。

下载好demo以后,import 整个maven项目,然后点击项目的properties来选择合适的jdk环境(太高的jdk环境有可能导致版本不兼容)。配置好以后我们就需要了解一下钉钉开发的几个参数:AppKey、AppSecret、agent-id、access_token等等。这里在constant里将这些参数信息都写进入(个人建议),当然access_token就不用写啦。这样后期开发的时候就不需要大量的填写参数,节约时间。而这里为什么不配置access_token的原因就是它是一个变值,休眠时间内每7200S就产生一次变化,因此加入参数里面就可以了。而在URLconstant里都是一些常量网址,我们在开发的过程当中用到的接口都是通过get/post方式来请求这个url返回的信息。

这里先说一下,在应用开发之前,你如何获得AppKey、AppSecret等一些必备信息:首先是打开钉钉后台管理添加链接描述,扫码登陆后,选择添加应用,开发应用填写一系列相关的参数,如应用名称、头像等等,点击确定再次查看就可以得到这些信息啦。需要注意的是:整个添加应用没有管理选项,就说明一旦添加就无法删除,因此想要写demo练手的童鞋要慎重考虑哦,免得搞太多应用记不得哪个。

免密登录:首先用一张图就可以解释免密登录的整个流程:

钉钉E应用接口学习笔记

通过这个我们得到了AppKey、AppSecret、access_token等参数一步一步地我们就可以获取免登录的资格了。在这个入门级demo当中只需要获取这些参数就可以了。测试的话,我们打开application.java点击运行,在浏览器里输入http://localhost:8080/welcome,如果现实welcome就表示后台成功。

各种接口的开发,钉钉里的java sdk示例给了我们很详细的讲解,只要我们导入jar包,耐下心来写就可以了。

贴一段发送群消息的代码:

public static OapiMessageCorpconversationAsyncsendV2Response sendAll(String accessToken,String dept) throws ApiException{
		DingTalkClient client = new DefaultDingTalkClient(URL_SENDALL_GET);
		OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
		request.setDeptIdList(dept);
		request.setAgentId(new Long((long)253045251));
		request.setToAllUser(false);
		
		OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
		msg.setMsgtype("text");
		msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text());
		msg.getText().setContent("张三正在找你,有事稍后联系");
		request.setMsg(msg);
		
		OapiMessageCorpconversationAsyncsendV2Response response = client.execute(request,accessToken);
		return response;
	}
           
public static JSONObject sendDDMessage(long agentId, String userId, String content,String accessToken) {
		DingTalkClient client = new DefaultDingTalkClient("https://eco.taobao.com/router/rest");
		CorpMessageCorpconversationAsyncsendRequest req = new CorpMessageCorpconversationAsyncsendRequest();
		req.setMsgtype("oa"); // 消息类型
		req.setAgentId(agentId);
		req.setUseridList(userId);
		req.setToAllUser(false); // 是否发送给企业全部用户
		req.setMsgcontentString(content);
		try {
			String token = accessToken;
			CorpMessageCorpconversationAsyncsendResponse rsp = client.execute(req, token);
			JSONObject json = JSONObject.
			//fromObject(rsp.getResult());
			if (json != null) {
				return json;
			}
		} catch (ApiException e) {
			e.printStackTrace();
		}
		return null;
	}
           

当然这里我还没有涉及到前台,因此肯定还有不对的地方,还望各位大佬多多指正!

继续阅读