文章目录

  • 钉钉官方接口调用过程
  • 获取企业内部应用的访问凭证accessToken
  • 根据员工的企业UserId获取钉钉官方的unionId唯一性id
  • UserId的获取方法
  • appKey和appSecret的获取方法
  • 易错点


钉钉官方接口调用过程

获取企业内部应用的访问凭证accessToken

首先需要引入依赖,如下图:

api javascript 钉钉 钉钉接口调用_restful

钉钉开发者调用钉钉官方的接口的时候,一定要先要进行认证,什么意思呢?就是必须要告诉钉钉我是一个企业开发者,我有权限调用你的接口,那具体怎么认证呢?企业开发者通常可以在钉钉里面创建应用,我们需要把我们的应用的appKey键和appSecret告诉钉钉官方,这样钉钉官方就会给我们返回一个accessToken值,有了这个token认证,钉钉官方就会允许我们调用它们的接口了。

代码如下:

package com.eqianbao.dingtest.DingDingTest;

import com.aliyun.tea.*;
import com.aliyun.dingtalkoauth2_1_0.models.*;
import com.aliyun.teaopenapi.models.*;

/**
 * @Date 2021/10/11 17:08
 * @Author 望轩
 */
public class accessToken {
    /**
     * 使用 Token 初始化账号Client
     * @return Client
     * @throws Exception
     * 钉钉开发者调用钉钉官方的接口的时候,一定要先要进行认证,什么意思呢?就是必须要告诉钉钉我是一个企业开发者,我有权限调用
     * 你的接口,那具体怎么认证呢?企业开发者通常可以在钉钉里面创建应用,我们需要把我们的应用的appKey键和appSecret告诉钉钉官方,
     * 这样钉钉官方就会给我们返回一个accessToken值,有了这个token认证,钉钉官方就会允许我们调用它们的接口了。
     */
    public static com.aliyun.dingtalkoauth2_1_0.Client createClient() throws Exception {
        Config config = new Config();
        config.protocol = "https";
        config.regionId = "central";
        return new com.aliyun.dingtalkoauth2_1_0.Client(config);
    }
    public static String getAccessToken() throws Exception {
        java.util.List<String> args = java.util.Arrays.asList();
        com.aliyun.dingtalkoauth2_1_0.Client client = accessToken.createClient();
        GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest()
                .setAppKey("dingodbyu1e5hxjl1eia")
              .setAppSecret("dBagtGBojKqmHOrVOOe3lR1rnoYWr3mAP_HjMmUutdLke2svyaDUfs4Eor1LvYl_");
        try {
            GetAccessTokenResponse response=client.getAccessToken(getAccessTokenRequest);
            //输出我们得到的accessToken的值
            System.out.println(response.getBody().getAccessToken());
            return response.getBody().getAccessToken();


        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }

        } catch (Exception _err) {
            TeaException err = new TeaException(_err.getMessage(), _err);
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err 中含有 code 和 message 属性,可帮助开发定位问题
            }

        }
        return null;
    }

    public static void main(String[] args) throws Exception {
        System.out.println(getAccessToken());

    }
}

api javascript 钉钉 钉钉接口调用_开发者_02

根据员工的企业UserId获取钉钉官方的unionId唯一性id

首先我们需要导入一个包,如下图:

api javascript 钉钉 钉钉接口调用_restful_03

并且我们需要调用一个钉钉官方接口,https://oapi.dingtalk.com/topapi/v2/user/get,调用钉钉官方接口的代码如下:

package com.eqianbao.dingtest.DingDingTest;

import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiV2UserGetRequest;
import com.dingtalk.api.response.OapiV2UserGetResponse;

/**
 * @Date 2021/10/11 17:24
 * @Author 望轩
 */
public class unionId {
    public static void main(String[] args) throws Exception {
        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
        OapiV2UserGetRequest req = new OapiV2UserGetRequest();
        req.setUserid("94937509bd53d2b7a64ba5f157e5ff17");
        req.setLanguage("zh_CN");
        OapiV2UserGetResponse rsp = client.execute(req, accessToken.getAccessToken());
        System.out.println(rsp.getResult().getUnionid());
    }
}

api javascript 钉钉 钉钉接口调用_java_04

UserId的获取方法

api javascript 钉钉 钉钉接口调用_mvc_05

appKey和appSecret的获取方法

api javascript 钉钉 钉钉接口调用_mvc_06

然后点进相关的应用,如下图:

api javascript 钉钉 钉钉接口调用_java_07

易错点

在调用钉钉企业的接口的得到unionId的接口的时候,如下图:

api javascript 钉钉 钉钉接口调用_mvc_08

去开发者平台开启权限,如下图:

api javascript 钉钉 钉钉接口调用_java_09

api javascript 钉钉 钉钉接口调用_mvc_10