前言
現在軟件開發不僅要面對前端碎片化,還要面對後端碎片化。針對前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自適應方案,參見:自適應佈局:pc = mobile + pad
在這裏,咱們重點要解決的是後端碎片化。比如要開發一個業務系統,既需要與微信、企業微信整合,又需要與釘釘整合,該如何設計整個架構呢?
其實,不論是微信、企業微信,還是釘釘,面向實際業務層面的API都不復雜,複雜的是各自獨立的賬號體系如何與業務系統打通的問題。當賬號接口對接完成,後續的業務開發就很順暢了
CabloyJS設計了一套用户系統與身份認證系統完全分離的機制,從而可以實現一個用户可以綁定多種登錄方式。而且,這些不同的登錄方式都是通過Provider的組件方式動態插入系統的。所以,剩下的工作就是按照Provider的方式來分別對接微信、企業微信和釘釘了
相關文章參考
- Cabloy-通用的身份認證機制
- Cabloy-微信
- Cabloy-企業微信
- Cabloy-釘釘
Cabloy-微信是什麼
Cabloy-微信是基於CabloyJS全棧業務開發框架開發的微信接口模塊,當前整合了微信公眾號、微信Web登錄和微信小程序的接口,達到開箱即用的使用效果。在Cabloy-微信的基礎上,可以很方便的開發各類微信業務系統
核心目標
微信開發最複雜的就是賬號體系對接,比如:
- 在
消息推送系統中,對新用户進行註冊 - 通過
網頁登錄,對新用户進行註冊 - 通過
微信小程序登錄,對新用户進行註冊 - 如果啓用
微信開放平台,如何通過unionid關聯同一用户 - 如果系統已經運行一段時間,再啓用
unionid機制,如果關聯舊賬號
一旦完成了這些場景下的賬號體系對接,真正的業務開發就很簡單了
因此,Cabloy-微信模塊的核心目標,就是自動完成這些場景下的賬號體系對接,我們所需要做的就是提供一些配置參數,然後就可以愉快的開啓業務邏輯的開發了
特性
基於CabloyJS全棧框架提供的便利性和靈活性,Cabloy-微信主要有如下特性:
1. 一站式整合
當前整合了微信公眾號、微信Web登錄和微信小程序的接口,具體如下:
| 場景 | 名稱 | 説明 |
|---|---|---|
| 微信公眾號 | 消息推送系統 | 自動完成接口對接,並自動進行用户註冊 |
| 微信公眾號 | 網頁登錄 | 自動跳轉微信登錄,並自動進行用户註冊 |
| 微信公眾號 | 網頁JSSDK | 自動注入JSSDK,並自動完成配置 |
| 微信Web登錄 | 只需提供appID和appSecret,即可自動完成登錄接口對接 | |
| 微信小程序 | 客服系統 | 自動完成接口對接 |
| 微信小程序 | 後台登錄接口 | 自動完成接口對接,並自動進行用户註冊 |
| 微信小程序 | 前端SDK | 提供SDK,便於微信小程序前端直接訪問CabloyJS後端API |
| 微信開放平台 | unionid | 自動匹配賬户,自動聚斂 |
2. 開箱即用
只需配置好微信賬號參數,所有接口自動完成對接
3. 自動聚斂
我們知道,通過微信開放平台提供的unionid機制,可以為微信公眾號和微信小程序提供同一身份。但是在實際場景中,往往先開發並部署了微信公眾號和微信小程序。這時候,二者的用户賬户是獨立的。那麼當我們配置好了微信開放平台的unionid機制後,以前獨立的用户賬户會自動進行合併。這種機制,我們稱之為自動聚斂
4. 多小程序支持
微信公眾號可以關聯多個微信小程序,因此,模塊也提供了多小程序支持。如果啓用了unionid機制,這些小程序同樣也可以實現統一身份的打通
5. 多租户/多站點支持
通過CabloyJS提供的多實例特性,可以實現多租户/多站點支持,比如為不同的企業提供微信服務。請參見:EggBornJS:多實例
新建CabloyJS項目
在進行後續模塊的安裝之前,您必須先創建一個CabloyJS項目
請務必參照文檔步驟配置MySQL數據庫連接參數、Redis連接參數請參見:指南:快速開始
安裝微信模塊
安裝微信模塊a-wechat
$ npm i egg-born-module-a-wechat
安裝微信測試模塊(可選)
微信測試模塊用於演示如何在模塊a-wechat的基礎上進行具體的業務開發(同時包含微信小程序的demo程序)。有兩種方式來使用微信測試模塊:
1. 安裝到node_modules
如果僅僅是預覽效果,可以直接安裝到{project}/node_modules
$ npm i egg-born-module-test-wechat
2. 安裝到src/module
可以將測試模塊安裝到{projecct}/src/module,然後在此模塊的基礎上進行自定義開發
$ mv {project}/node_modules/egg-born-module-test-wechat src/module/test-wechat
配置微信參數
直接在項目配置文件中配置微信公眾號、Web微信登錄和微信小程序的參數
src/backend/config/config.default.js
// modules
config.modules = {
'a-wechat': {
account: {
// 微信公眾號
public: {
appID: 'wxf27f7550a33caaaa',
appSecret: 'bbbb6a3addddbccccc200f973e91aaaa',
token: 'CabloyJS',
encodingAESKey: 'qHvLnaaaabufbbbbIbkRBcccctxUIBGddddCo5aeeee',
message: {
reply: {
// 默認回覆
default: 'You are welcome!',
// 當關注公眾號時的回覆
subscribe: 'You are subscribed!',
},
},
},
// web登錄
web: {
appID: '',
appSecret: '',
},
// 微信小程序
minis: {
default: {
appID: 'wx823df04764b9bbbb',
appSecret: 'c2eaaaada3bbbbe4073cccc381bbdddd',
token: 'CabloyJS',
encodingAESKey: 'kakPaaaa48mbubbbbRe0w0ccccGbj1v0rWowctVdddd',
},
},
},
},
};
account.public: 微信公眾號account.web: 支持微信登錄Web網站,需要事先通過微信開放平台申請網站應用,獲得appID和appSecretaccount.minis: 支持多個微信小程序。為了實際開發上的便利,我們默認提供一個default小程序。如果需要開發其他微信小程序,直接在minis添加新的配置即可
運行
啓動後端服務
$ npm run dev:backend
啓動前端服務
$ npm run dev:front
nginx配置
由於微信應用一定要綁定域名。為了支持開發調試,可以有不同的策略。如果我們想在服務器上配置開發環境,然後通過nginx把前端服務和後端服務反向代理給前端,請參見:nginx配置
如何訪問系統
1. 進入後台管理頁面
- 網址:http://yourdomain.com/
- 用户名:root
- 密碼:123456
2. 微信公眾號網頁
在微信中或微信開發者工具中直接訪問首頁,系統會自動進行微信登錄
- 首頁:http://yourdomain.com/
3. 微信Web登錄
在瀏覽器中直接訪問首頁,登錄頁面會自動顯示微信登錄按鈕,點擊按鈕,即可顯示二微信,通過手機微信掃描,自動完成登錄
- 首頁:http://yourdomain.com/
微信小程序開發
測試模塊test-wechat已經包含了一個微信小程序的demo程序,使用步驟如下:
- 在
微信開發者工具中直接導入demo程序,目錄路徑:{project}/src/module/test-wechat/front/demo/miniprogram - 修改小程序中的
appid,文件路徑:{project}/src/module/test-wechat/front/demo/miniprogram/project.config.json - 修改初始化參數:
{project}/src/module/test-wechat/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地址 |
相關鏈接
- 官網: https://cabloy.com/
- GitHub: https://github.com/zhennann/cabloy