1. 程式人生 > 實用技巧 >CabloyJS一站式助力微信、企業微信、釘釘開發 - 釘釘篇

CabloyJS一站式助力微信、企業微信、釘釘開發 - 釘釘篇

前言

現在軟體開發不僅要面對前端碎片化,還要面對後端碎片化。針對前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自適應方案,參見:自適應佈局:pc = mobile + pad

在這裡,咱們重點要解決的是後端碎片化。比如要開發一個業務系統,既需要與微信、企業微信整合,又需要與釘釘整合,該如何設計整個架構呢?

其實,不論是微信、企業微信,還是釘釘,面向實際業務層面的API都不復雜,複雜的是各自獨立的賬號體系如何與業務系統打通的問題。當賬號介面對接完成,後續的業務開發就很順暢了

CabloyJS設計了一套使用者系統身份認證系統完全分離的機制,從而可以實現一個使用者可以繫結多種登入方式。而且,這些不同的登入方式都是通過Provider

的元件方式動態插入系統的。所以,剩下的工作就是按照Provider的方式來分別對接微信、企業微信和釘釘了

相關文章參考

Cabloy-釘釘是什麼

Cabloy-釘釘是基於CabloyJS全棧業務開發框架開發的釘釘介面模組,當前整合了H5微應用釘釘小程式的介面,達到開箱即用的使用效果。在Cabloy-釘釘的基礎上,可以很方便的開發各類釘釘業務系統

核心目標

釘釘開發最複雜的就是賬號體系對接,比如:

  1. 企業通訊錄同步:部門、成員
  2. 訊息推送系統中,對使用者進行認證
  3. 通過網頁登入,對使用者進行認證
  4. 通過釘釘小程式登入,對使用者進行認證

一旦完成了這些場景下的賬號體系對接,真正的業務開發就很簡單了

因此,Cabloy-釘釘模組的核心目標,就是自動完成這些場景下的賬號體系對接,我們所需要做的就是提供一些配置引數,然後就可以愉快的開啟業務邏輯的開發了

兩大亮點

基於CabloyJS全棧業務開發框架本身提供的特性,使得Cabloy-釘釘模組具有以下兩個顯著的亮點:

1. PC、Mobile自適應

許多釘釘應用存在這樣一個問題:在Mobile端只能使用一部分功能,其他更多功能則需要登入PC系統進行操作

而CabloyJS框架下的Cabloy-釘釘允許所有的業務功能同時支援PC和Mobile使用。同時又能保證以下兩點:

  1. 通過角色許可權系統,控制不同使用者使用不同功能
  2. 前端頁面採用非同步載入策略,從而適應大型專案的開發
  • Mobile端效果

  • PC端效果

2. 資料孤島

企業從不同服務提供商採購不同的釘釘應用,必然導致資料孤島的出現,而且這些資料散存在不同服務商的後臺,缺乏資料聯動與共享機制

而CabloyJS框架本身就是基於業務模組構建的。企業自建的模組或者使用第三方的模組,都彙集在一個CabloyJS專案之中,並進行私有部署,從而從根本上解決了資料孤島的問題,不僅能實現資料聯動與共享,也可以更靈活的進行資料採集、處理和分析

歸根結底一句話,資料和程式都掌握在自己的手中

特性

基於CabloyJS全棧框架提供的便利性和靈活性,Cabloy-釘釘主要有如下特性:

1. 一站式整合

當前整合了H5微應用釘釘小程式的介面,具體如下:

場景 名稱 說明
H5微應用 訊息推送系統 自動完成介面對接,並對使用者進行認證
H5微應用 網頁登入 自動完成介面對接,並對使用者進行認證
H5微應用 網頁JSSDK 自動注入JSSDK,並自動完成配置
小程式 後臺登入介面 自動完成介面對接,並對使用者進行認證
小程式 前端SDK 提供SDK,便於釘釘小程式前端直接訪問CabloyJS後端API

2. 開箱即用

只需配置好釘釘賬號引數,所有介面自動完成對接

3. 多小程式支援

釘釘可以關聯多個釘釘小程式,因此,模組也提供了多小程式支援

4. 多租戶/多站點支援

通過CabloyJS提供的多例項特性,可以實現多租戶/多站點支援,比如為不同的企業提供釘釘服務。請參見:EggBornJS:多例項

5. PC、Mobile自適應

如上所述

新建CabloyJS專案

在進行後續模組的安裝之前,您必須先建立一個CabloyJS專案

請務必參照文件步驟配置MySQL資料庫連線引數、Redis連結引數

請參見:指南:快速開始

安裝釘釘模組

安裝釘釘模組a-dingtalk

$ npm i egg-born-module-a-dingtalk

安裝釘釘測試模組(可選)

釘釘測試模組用於演示如何在模組a-dingtalk的基礎上進行具體的業務開發(同時包含釘釘小程式的demo程式)。有兩種方式來使用釘釘測試模組

1. 安裝到node_modules

如果僅僅是預覽效果,可以直接安裝到{project}/node_modules

$ npm i egg-born-module-test-dingtalk

2. 安裝到src/module

可以將測試模組安裝到{projecct}/src/module,然後在此模組的基礎上進行自定義開發

$ mv {project}/node_modules/egg-born-module-test-dingtalk src/module/test-dingtalk

配置釘釘引數

直接在專案配置檔案中配置H5微應用釘釘小程式的引數

src/backend/config/config.default.js

  // modules
  config.modules = {
    'a-dingtalk': {
      account: {
        dingtalk: {
          corpid: 'ww1fe9daaaa045aaaa',
          ssosecret: '02322323dsssw2',
          // apps
          apps: {
            selfBuilt: {
              agentid: '',
              appkey: '',
              appsecret: '',
              businessCallback: {
                host: 'yourdomain.com',
                token: appInfo.name,
                encodingAESKey: '',
              },
            },
          },
          // webs
          webs: {
            default: {
              appid: '',
              appsecret: '',
            },
          },
          // minis
          minis: {
            default: {
              agentid: '',
              appkey: '',
              appsecret: '',
            },
          },
        },
      },
    },
};
名稱 說明
apps 配置所有H5微應用的引數,包括:釘釘內建應用、第三方應用,以及自建應用。如需訪問其他應用提供的API介面,直接在apps新增新的配置即可
apps.selfBuilt 預設的H5微應用
businessCallback 事件訂閱,與管理後臺事件訂閱的配置保持一致。非常重要,比如通訊錄的同步更新需要用到此配置
webs Web掃碼登入。釘釘可支援多個,為了實際開發上的便利,我們預設提供一個default配置
minis 支援多個釘釘小程式。為了實際開發上的便利,我們預設提供一個default小程式。如果需要開發其他釘釘小程式,直接在minis新增新的配置即可

執行

啟動後端服務

$ npm run dev:backend

啟動前端服務

$ npm run dev:front

nginx配置

由於釘釘應用一定要繫結域名。為了支援開發除錯,可以有不同的策略。如果我們想在伺服器上配置開發環境,然後通過nginx把前端服務和後端服務反向代理給前端,請參見:nginx配置

如何訪問系統

1. 進入後臺管理頁面

2. 同步通訊錄

只有加入到釘釘通訊錄中的使用者才可以訪問H5微應用釘釘小程式。因此,我們需要先進行通訊錄同步操作

當第一次同步完部門和成員後,以後所有的變更(增、刪、改)都會自動進行同步

依次進入:首頁->設定->釘釘->通訊錄管理

3. H5微應用-Mobile網頁

釘釘中直接訪問首頁,系統會自動進行釘釘登入

4. H5微應用-Web掃碼登入

瀏覽器中直接訪問首頁,登入頁面會自動顯示釘釘登入按鈕,點選按鈕,即可顯示二微信,通過手機釘釘掃描,自動完成登入

需要進入釘釘的管理後臺,在移動接入應用-登入中建立掃碼登入應用授權,回撥域名設定為: http://yourdomain.com/api/a/dingtalk/passport/a-dingtalk/dingtalkweb/callback

5. 管理後臺進入

在釘釘管理端的工作臺,點選H5微應用的圖示可以直接進入應用的後臺管理頁面

需要進入釘釘的管理後臺,在H5微應用的開發管理中設定管理應用後臺的URL地址為: http://yourdomain.com/api/a/dingtalk/passport/a-dingtalk/dingtalkadmin/callback

釘釘小程式

測試模組test-dingtalk已經包含了一個釘釘小程式的demo程式,使用步驟如下:

  1. 釘釘開發者工具中直接匯入demo程式,目錄路徑:{project}/src/module/test-dingtalk/front/demo/miniprogram

  2. 修改初始化引數:

{project}/src/module/test-dingtalk/front/demo/miniprogram/app.js

// 初始化cabloy
const cabloyOptions = {
  base: {
    scene: 'default',
    locale: 'en-us',
  },
  api: {
    baseURL: 'http://yourdomain.com',
  },
};
this.cabloy = Cabloy(this, cabloyOptions);

預設對應的是default小程式,如果要開發其他小程式,只需修改如下引數

名稱 說明
base.scene 小程式場景名,預設為default
base.locale 前端預設使用的語言
api.baseURL 後端服務的API地址

相關連結