# 钉钉集成配置

### **概述**

私有云环境接入钉钉需要按“第三方企业应用”的形式，大概需要做如下的步骤：

* 进入“钉钉开发平台”，创建一个“第三方企业应用”-》“H5微应用”
* “移动接入应用”-》创建一个“扫码登录应用授权”
* 获得相关的App、Suite凭证
* 构建包含了应用凭证的前后端安装包
* 部署上线

以下配置过程需要用到的地址，请在使用时替换：

**CALLBACK\_URL**：<https://您的域名/project/api/dingding>

**APP\_URL**：<https://您的域名>

### **客户准备**

首次配置需要企业的钉钉管理员在实施现场，以便管理员扫码授权

需要准备外网可访问的ONES系统访问域名或IP

远程协作软件，推荐 \[向日癸] 远程软件（下载地址： <https://sunlogin.oray.com/zh_CN/download>）\
&#x20;

### **1. 进入钉钉管理后台**

钉钉管理员扫码登录到[钉钉开发平台](https://open-dev.dingtalk.com/) 与ONES实施工程师通过远程协作软件建立连接，共享钉钉后台页面

### **2. 创建微应用套件**

选择“应用开发”-》“第三方企业应用”-》“H5微应用”-》“创建应用”，创建“测试应用”

注：新老套件的区别在于，老套件不能上架应用市场；新套件必须要使用钉钉的RDS（要付费的）。

**第一步：创建应用**

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32qiTTWGLxpou0nQca%2Fimage.png?alt=media\&token=6b666061-9bca-484a-8d31-1d1f6249190e)

应用类型：测试应用

应用名称：ONES

应用logo：<https://dl.ones.ai/logo\\_2019.jpg>

应用简介：ONES

应用主页：

**第二步 配置开发信息**

在这里选择最简单的HTTP推送类型

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32qcS4-KwW4QaiMtDa%2Fimage.png?alt=media\&token=5c72f9bd-7b77-4e9c-8378-7313a231b07d)

然后**Token**需要自己填一段随机的字符串，再点“自动生成”生成“**数据加密密钥**”。

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32qvhN7CE8eHRNXwGr%2Fimage.png?alt=media\&token=0226d839-4d08-4773-95a0-a2237421aeb9)

然后点“创建应用”。

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32qs6qBArBeEGNEDHz%2Fimage.png?alt=media\&token=91e05930-4c4a-4d18-849a-ff86f9d0154a)

成功创建以后，我们可以获得以下凭证：

• **SuiteKey**

• **SuiteSecret**

• **Token**

• **EncodingAESKey**（数据加密密钥）

**第三步 创建登录的App凭证**

打开“应用开发”-》“移动接入应用”-》“登录”-》“创建扫码登录授权”

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32r0NRc9DPp2FGe5ZA%2Fimage.png?alt=media\&token=800ab358-8bce-4aa9-a649-2d2f52368bac)

填写所需要的信息：

• LOGO地址：（待提供）

• 回调域名：（最终部署的域名）

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32r4fd_ubaPSfAKYuC%2Fimage.png?alt=media\&token=804010ec-f9ec-42f6-8807-3972522858c2)

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32rECQeRaa5ZUTU2E1%2Fimage.png?alt=media\&token=8b6a049e-f55c-4ebc-83d0-7e30e3956694)

成功创建以后可以获得以下凭证:

• **AppID**

• **AppSecret**

**第四步 替换前后端配置项**

配置项：

> "dingding\_provider\_corpid":"dingding",\
> "dingding\_provider\_secret":"dingding",
>
> "dingding\_suitesecret":"\<SuiteSecret>",\
> "dingding\_suitekey":"\<SuiteKey>",\
> "dingding\_callback\_token":"\<Token>",\
> "dingding\_callback\_encoding\_aeskey":"\<EncodingAESKey>",\
> "dingding\_callback\_url":"\<CALLBACK\_URL>",\
> "dingding\_appid":"\<AppID>",\
> "dingding\_appsecret":"\<AppSecret>"

执行应用配置脚本（根据对应提示输入对应值）

\> bash ddserver.sh

\> containerId=$(dockr ps | grep -w '0.0.0.0:80' | awk '{print $1}')

\> ./onesconfigure update ${containerId} --base\_url \<APP\_URL> --old\_base\_url <http://127.0.0.1> --config config.json

\> docker restart ${containerId}

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32rSClxYXaGSIVJCTu%2Fimage.png?alt=media\&token=29a414be-c361-4544-8fc3-12745959be8b)

更新配置后部署后端环境，到第五步方可以验证其有效性。

**第五步 配置回调URL**

打开刚创建的H5微应用，现在回调URL是还没有设置的状态，点击“修改”：

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32rdUm-Jyu5298CglN%2Fimage.png?alt=media\&token=1821d7a5-06e5-4995-aa5f-6138129caff2)

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32rla-4fWMvs-pAYq-%2Fimage.png?alt=media\&token=161387a2-3b48-489d-84c1-8fe038441872)

把上述第四步的回调URL（\<CALLBACK\_URL>）填到这里，并验证其有效性。

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32rp4pg1Xhwpb7o2Y4%2Fimage.png?alt=media\&token=9825b3a0-1a85-4990-ab1d-e3f28697ebfb)

成功以后保存，然后要触发一次推送Ticket，推送成功了才算有效。

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32rvk40RZIPv3-QjUh%2Fimage.png?alt=media\&token=2319a7ad-73b8-4dcf-a6b2-1500997302a9)

### **3. 设置企业的应用授权**

对于私有部署企业，由于我们配的是测试应用，所以可以直接在应用配置里面授权，但我们需要先配置应用需要哪些权限。

**第一步：打开应用的“接口权限”页，开通我们需要获取的“通讯录权限”。理由可以随便填写。**

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32rzakhJgnCD2F-sXY%2Fimage.png?alt=media\&token=539aa40f-6028-4e34-b300-62427d68e2f9)

**第二步：把组织加到体验组织里（即把组织授权给该应用）。**

打开应用的“体验组织”页，选择自己组织，然后点“授权”

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32s2U_XpYVBfofhwuW%2Fimage.png?alt=media\&token=e21ae833-41db-4cb4-b48e-fe4dc72ba2d2)

成功以后回在下面的列表看到已授权组织，这时后端会收到一个授权的回调消息，在数据库里面会记下该授权记录。

**第三步：设置应用的可见范围**

打开钉钉的[企业管理后台](https://oa.dingtalk.com/index.htm#/microApp/microAppList)（跟“钉钉开放平台”不是一个地方），在“工作台”-》“第三方应用”找到刚才授权的应用，点“设置”：

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32s5oVdS_wN8mJH3ql%2Fimage.png?alt=media\&token=48df4e8a-de91-45d7-9110-3fb6ad3e6fcf)

在“可见范围”里选择“部分员工”，然后把需要加入到ONES团队的部门、人员都选进去，点“提交”。

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32s9hPw873QBbkzB7X%2Fimage.png?alt=media\&token=df2c29c0-54bf-4522-988a-e4780d987725)

遇见问题：在子管理员账号下创建应用，在工作台中的第三方应用不显示

### **4. 验证ONES团队绑定钉钉企业**

完成以下两个步骤，则可以认为绑定钉钉成功：

• ONES团队管理员进入到“团队管理”界面，选择“绑定第三方账号”-》“钉钉”，成功以后显示已绑定钉钉企业

– 打开“组织架构”，可以看到企业的部门已经同步过来。

• 退出ONES系统，在登录选项里选择“钉钉”，用手机钉钉app扫码登录，完成绑定ONES账号流程并登录到ONES系统。

![](https://2389253470-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LwaVKDFhf_vIPo5hDmS%2F-M32nlaKvLZ0JOn0Na04%2F-M32sDUHoMtCsErp-Qv5%2Fimage.png?alt=media\&token=0aaeace6-e3e8-44b3-b5ee-ac68564a3c4e)

### **5. 其他注意事项**

因SuiteTicket为钉钉后台每十分钟推送，并没有主动获取的接口，故在系统升级以后，可能需要点击钉钉后台的推送SuiteTicket按钮，程序会持久化存储SuiteTicket的值至数据库。
