釘釘第三方企業應用開發快速入門
釘釘第三方企業應用開發快速入門
快速啟動入門
1. 建立小程式
1.1. 登入開發者後臺
登入釘釘開發者後臺,選擇應用開發-第三方企業應用-小程式,點選建立應用。
1.2. 填寫基礎資訊
填寫應用基本資訊,包括應用名稱、應用Logo、應用型別和應用簡介。
1.3. 檢視應用資訊
建立成功後,可以在應用列表檢視建立的應用。點選應用還可以檢視應用的詳細資訊,如下圖所示:
2. 設定安全域名
小程式需要事先設定一個或多個服務端安全域名(或IP),小程式前端只能通過這些安全域名(或IP)與服務端進行網路通訊。當安全域名更新時,需要在IDE重新打包上傳版本,設定的域名才會生效。
本質上,小程式前端與後端的網路通訊是同普通的H5前後端一樣的。因此在您做快速體驗時,可以填寫小程式前端所在環境能訪問的任何域名/IP地址,比如可以是您自己的辦公電腦本機地址或者區域網內地址。
就是將你伺服器的域名或地址新增進去
3. 設定介面許可權
釘釘開放了豐富的服務端介面能力,開發者可以使用這些介面能力,實現企業系統與釘釘的整合打通。在呼叫介面前,需要先申請並設定介面呼叫許可權,包括通訊錄許可權、外部聯絡人許可權、審批許可權及內購開發許可權等。如下圖所示。
4. 開發管理(建立回撥)
設定回撥URL用於啟用介面,沒有公網域名可以使用內網穿透的方式對外暴露,以便釘釘回撥
5. 下載原始碼
使用命令git clone下載程式碼,也可以直接用HTTP形式從程式碼倉庫下載。
服務端程式碼 git clone https://github.com/opendingtalk/eapp-isv-quick-start-java.git 前端程式碼 git clone https://github.com/opendingtalk/eapp-isv-quick-start-fe.git
6. 設定與修改原始碼
6.1. 伺服器端
6.1.1. 配置程式碼
修改com.config.Constant.java類中的配置
/** * 專案中的常量定義類 */ public class Constant { /** * 應用的SuiteKey,登入開發者後臺,點選應用管理,進入應用詳情可見 */ public static final String SUITE_KEY="憑證與基礎資訊頁面中SuiteKey的值"; /** * 應用的SuiteSecret,登入開發者後臺,點選應用管理,進入應用詳情可見 */ public static final String SUITE_SECRET="憑證與基礎資訊頁面中SuiteSecret的值"; /** * 回撥URL簽名用。應用的簽名Token, 登入開發者後臺,點選應用管理,進入應用詳情可見 */ public static final String TOKEN = "自定義要與開發管理中的 `Token` 保持一致"; /** * 回撥URL加解密用。應用的"資料加密金鑰",登入開發者後臺,點選應用管理,進入應用詳情可見 */ public static final String ENCODING_AES_KEY = "自定義要與開發管理中 `資料加密金鑰` 保持一致"; /** * 用於暫時儲存釘釘發來的TICKET值 */ public static String TICKET; }
6.1.2. 業務程式碼
修改com.controller.CallbackController.java
類中的dingCallback
方法
//在 else if (EVENT_SUITE_TICKET.equals(eventType)) {}中新增如下程式碼
//用於更新Ticket
Constant.TICKET = String.valueOf(callBackContent.get("SuiteTicket"));
//在else if (EVENT_TMP_AUTH_CODE.equals(eventType)) {}中新增如下程式碼,也可以抽取成方法呼叫
//用於啟用應用,當你在版本管理與釋出中 點選開通應用時被呼叫
try {
//根據回撥資料型別做不同的業務處理
String authCode = callBackContent.getString("AuthCode");
String authCorpId = callBackContent.getString("AuthCorpId");
//bizLogger.info("收到審批任務進度更新: " + plainText);
//獲取第三方企業憑證suite_access_token
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_suite_token");
OapiServiceGetSuiteTokenRequest request = new OapiServiceGetSuiteTokenRequest();
request.setSuiteKey(Constant.SUITE_KEY);
request.setSuiteSecret(Constant.SUITE_SECRET);
request.setSuiteTicket("suiteTicket");
OapiServiceGetSuiteTokenResponse response = client.execute(request);
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
String suite_access_token = jsonObject.getString("suite_access_token");
System.out.println("得到的suite_access_token===" + suite_access_token);
//獲取永久授權碼
DingTalkClient client1 = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_permanent_code?suite_access_token=" + suite_access_token);
OapiServiceGetPermanentCodeRequest req = new OapiServiceGetPermanentCodeRequest();
req.setTmpAuthCode(authCode);
OapiServiceGetPermanentCodeResponse rsp = client1.execute(req);
System.out.println(rsp.getBody());
JSONObject jsonObject1 = JSONObject.parseObject(rsp.getBody());
String permanent_code = jsonObject1.getString("permanent_code");
System.out.println("得到的永久授權碼===" + permanent_code);
//String permanent_code = jsonObject1.getString("permanent_code");
//啟用應用
DingTalkClient client3 = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/activate_suite?suite_access_token=" + suite_access_token);
OapiServiceActivateSuiteRequest req3 = new OapiServiceActivateSuiteRequest();
req3.setSuiteKey(Constant.SUITE_KEY);
req3.setAuthCorpid(authCorpId);
req3.setPermanentCode(permanent_code);
OapiServiceActivateSuiteResponse rsp3 = client3.execute(req3);
System.out.println("啟用應用結果===" + rsp.getBody());
//todo: 實現審批的業務邏輯,如發訊息
} catch (ApiException e) {
e.printStackTrace();
}
修改com.controller.IndexController.java
類中的getSuiteTicket(String suiteKey)
方法
private String getSuiteTicket(String suiteKey) {
//返回釘釘推送來的Ticket值
return Constant.TICKET;
}
6.2. 前端
下載釘釘小程式開發者工具IDE,安裝並開啟
開啟IDE後選擇您下載的前端專案eapp-isv-quick-start-fe資料夾,選擇開發的應用型別,
開啟後在右上角點選登入,出現掃碼登入介面,使用釘釘掃碼登入IDE。
注意:如果開發者已經開啟IDE,請關閉重新開啟,初次開啟才可以選擇開啟新工程。
選擇專案型別即要開發的應用型別。
點選右上角登入按鈕使用釘釘掃碼登入。
6.2.1. 修改前端配置
修改檔案eapp-isv-quick-start-fe/page/index/index.js。
IP埠為本機的IP和PORT,注意url中的IP或域名必須是開發者平臺中設定的本應用的安全域名。
let domain = "https://sakura.xxxxxxxxxx";//設定為內網穿透的地址就行
7. 新增體驗組織並開通應用
重要:面向企業的應用必須企業開通才能進行體驗,您需要建立專門的體驗組織併為此組織開通本應用。
請注意:此處新增的體驗組織是建立全新的測試組織,並不能新增已有組織為體驗組織-比如本應用所在的開發組織。
測試應用可以直接開通。而正式應用需要驗證回撥有效性並設定好回撥URL才能開通。本demo建議建立的是測試應用,因此可以暫時忽略驗證回撥有效性,可直接開通本應用。
新增一個非當前應用持有者的團隊,然後點選開通應用
此時要保證你的伺服器端是開啟的
8. 專案管理釘釘遠端
然後啟動專案,如果獲取到使用者資訊userid則表示應用執行成功。