一、获取到app-key 和app-secret,及相应的api接口调用权限
1、登陆钉钉开放平台:钉钉后台开发者地址
在这里插入图片描述

下面展示以拉取钉钉公告示例,其他的api接口调用,开发文档地址:钉钉开发文档

2、进入公告开发应用
在这里插入图片描述
3、获取相应的接口调用权限
在这里插入图片描述
二、获取token,2个小时的过期时间,token每天有调用次数限制,可以存储在redis,后续调用接口直接在redis拿
引入jar包

	<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.16</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
        </dependency>
   /**
     * 获取token 2个小时过期
     *
     * @return 单条数据
     */
    public Result<Boolean> getDingDIngToken() {
        String s = HttpUtil.get("https://oapi.dingtalk.com/gettoken?appkey="+appKey+"&appsecret="+appSecret+"");
        DingDingTokenVO dingDingTokenVO = JsonUtil.parseObject(s, DingDingTokenVO.class);
        if(Objects.nonNull(dingDingTokenVO) && dingDingTokenVO.getErrcode().equals(0)){
            redisUtil.setEx(StaticTokenStaticVariables.DINGDING_TOKEN,dingDingTokenVO.getAccess_token(),dingDingTokenVO.getExpires_in(),TimeUnit.SECONDS);
        }else {
           log.info("dingDingToken-{}",s);
            throw new BizException("获取token失败");
        }
        return Result.success(Boolean.TRUE);
    }
    public String redisDingToken() {
        Boolean exists = redisUtil.exists(StaticTokenStaticVariables.DINGDING_TOKEN);
        if(!exists){
             getDingDIngToken();
        }
        return redisUtil.get(StaticTokenStaticVariables.DINGDING_TOKEN);
    }

Token实体

@Data
public class DingDingTokenVO {

    private String access_token;
    private Integer errcode;
    private String errmsg;
    private Integer expires_in;
}

获取公告列表

  /**
     * 获取公告列表
     *
     * @return
     */
    public Result<String> getBlackboard(@RequestBody BlackboardPageParamVO blackboardPageParamVO) {
        String url = "https://oapi.dingtalk.com/topapi/blackboard/listids?access_token=" + redisDingToken();
        Map<String, Object> param = new HashMap<>();
        blackboardPageParamVO.setOperation_userid(redisUtil.get("operation_userid"));
        param.put("query_request", JsonUtil.toJSONString(blackboardPageParamVO));
        String post = HttpUtil.post(url, param);
        System.out.println(post);
        Map map = JsonUtil.parseObject(post, Map.class);
        String result = JsonUtil.toJSONString(map.get("result"));
        List<String> blackboardCategoryDTOS = JsonUtil.parseJSONArray(result, new TypeReference<List<String>>() {
        });
       // if(!CollectionUtils.isEmpty(blackboardCategoryDTOS)){
       //     for (String blackboardCategoryDTO : blackboardCategoryDTOS) {
       //         getBlackboardInfo(blackboardCategoryDTO);
       //     }
       // }
        return Result.success(post);
    }
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐