日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

钉钉第三方企业应用开发快速入门

發布時間:2023/12/24 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 钉钉第三方企业应用开发快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

釘釘第三方企業應用開發快速入門

快速啟動入門

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. 推送Ticket

此時要保證你的服務器端是開啟的

9. 項目關聯釘釘應用

然后啟動前端項目(啟動之前要確保開通應用推送Ticket已經完成并且成功(就是第7、8步)),如果獲取到用戶信息userid則表示應用運行成功。

注意:關聯的小程序,和體驗組織(這里的體驗組織是第七步創建并開通的而不是創建此項目的團隊)

總結

以上是生活随笔為你收集整理的钉钉第三方企业应用开发快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。