前言

现在软件开发不仅要面对前端碎片化,还要面对后端碎片化。针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad

在这里,咱们重点要解决的是后端碎片化。比如要开发一个业务系统,既需要与微信、企业微信整合,又需要与钉钉整合,该如何设计整个架构呢?

其实,不论是微信、企业微信,还是钉钉,面向实际业务层面的API都不复杂,复杂的是各自独立的账号体系如何与业务系统打通的问题。当账号接口对接完成,后续的业务开发就很顺畅了

CabloyJS设计了一套用户系统身份认证系统完全分离的机制,从而可以实现一个用户可以绑定多种登录方式。而且,这些不同的登录方式都是通过Provider的组件方式动态插入系统的。所以,剩下的工作就是按照Provider的方式来分别对接微信、企业微信和钉钉了

相关文章参考

  • Cabloy-通用的身份认证机制
  • Cabloy-微信
  • Cabloy-企业微信
  • Cabloy-钉钉

Cabloy-微信是什么

Cabloy-微信是基于CabloyJS全栈业务开发框架开发的微信接口模块,当前整合了微信公众号微信Web登录微信小程序的接口,达到开箱即用的使用效果。在Cabloy-微信的基础上,可以很方便的开发各类微信业务系统

核心目标

微信开发最复杂的就是账号体系对接,比如:

  1. 消息推送系统中,对新用户进行注册
  2. 通过网页登录,对新用户进行注册
  3. 通过微信小程序登录,对新用户进行注册
  4. 如果启用微信开放平台,如何通过unionid关联同一用户
  5. 如果系统已经运行一段时间,再启用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和appSecret
  • account.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程序,使用步骤如下:

  1. 微信开发者工具中直接导入demo程序,目录路径:{project}/src/module/test-wechat/front/demo/miniprogram

  2. 修改小程序中的appid,文件路径:{project}/src/module/test-wechat/front/demo/miniprogram/project.config.json

  3. 修改初始化参数:

{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

CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇相关推荐

  1. 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件

    微信小游戏申请注册流程+开发微信小游戏类目需要具备条件 在这里先讲一下,小程序和小游戏前面的注册流程都是一样的,在注册完毕登录小程序后台后选择类目时需要注意一下,我下面讲解的是已经通过认证的服务号进行 ...

  2. 微信公众号H5页面开发--微信JS-SDK引用

    微信公众号H5页面开发–微信JS-SDK引用 微信提供了微信公众号开发者手册,官方地址:https://mp.weixin.qq.com/ 公众号内许多复杂的业务场景,都是通过网页形式来提供服务,这时 ...

  3. CabloyJS一站式助力微信、企业微信、钉钉开发 - 钉钉篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  4. CabloyJS一站式助力微信、企业微信、钉钉开发 - 企业微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  5. 微信企业支付 服务器根证书,微信第三方平台微信支付配置没有rootca.pem根证书文件的解决办法-蜘蛛网博客...

    微信第三方平台微信支付配置没有rootca.pem根证书文件的解决办法我们在通过微信第三方平台制作微信活动的时候,很多情况下都需要用到微信支付接口,例如商城类的微信功能,微砍价.微助力.微秒杀.微拼团 ...

  6. 微信jsapi支付获取code_JAVA开发微信支付-公众号支付/微信浏览器支付(JSAPI)

    写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都没摸清,更不要说实现了.本以为网上的微信开发教程 ...

  7. 微信 php 分组信息,C#开发微信门户及应用在管理系统中同步微信用户分组信息...

    在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用 ...

  8. 微信小程序经典案例开发(微信开发)

    课程介绍: 非常值得推荐的一套微信小程序开发视频教程,来自极客学院全套的微信实战开发程序,值得学习 -------------------课程目录------------------- ├<; ...

  9. android studio微信界面设计,android studio开发微信界面

    android studio开发微信界面 android studio开发微信界面 功能说明:主要是做微信的简单的聊天界面,利用Fragment,进行微信界面的跳转 项目代码: 源代码地址 MainA ...

最新文章

  1. 仅展示近三天的动态设置_微信朋友圈设置三天可见了吗?
  2. ARP协议SMTP协议MIME
  3. SQLServer2008 Transact_SQL语言基础实例
  4. 物以类聚:对象也有生命
  5. 拖拽之路(四):自定义QListView实现美观的拖拽样式(拖拽不影响选中)
  6. IDEA Maven 聚合项目(多模块)搭建--最精简
  7. 黑客雇佣组织开发出新型的Windows 隐秘后门
  8. javascript arguments对象研究--针对jquery源码研究再研究
  9. Android实例-利用WebBrowser实现浏览器(XE8+小米2)
  10. 计算机控制系统复习提纲,《计算机控制系统》复习要点
  11. python统计及格不及格人数_Python一次输入多个值(列出存储信息),python,一次性,数值,列表...
  12. 软件工程网络15个人阅读作业2(201521123010徐璐琳)
  13. fscanf、fprintf的返回值
  14. MySQL管理工具-SQLyog 9.63的使用详解,带截图
  15. C语言 打印乘法口诀表
  16. python定义一个函数实现整数的幂运算_Leetcode练习(Python):第326题:3的幂:给定一个整数,写一个函数来判断它是否是 3 的幂次方。...
  17. 一位营销总监的辞职信
  18. html5判断出生日期,出生时间看五行,出生日期查五行属性?
  19. OpenCascade学习笔记-创建一个简单的OpenCascade单文档
  20. Qt 如何实现的 Meta Object

热门文章

  1. 在Ubuntu中如何设置临时的和永久的默认路由?
  2. android京东商城一级分类到二级分类的滑动效果,Android仿京东分类模块左侧分类条目效果...
  3. R语言 t分布的推导 初级统计学 学生t分布理论
  4. 关于黑苹果的网站资源
  5. [车联网安全自学篇] Android安全之Android工程模式
  6. SEO关键词布局技巧:合理才是硬道理
  7. flask ajax 上传 图片,flask jQuery ajax 上传文件
  8. 微信小程序实现购物商城(附源码)
  9. 解决Altium Designer在画PCB时,焊盘放置到板子边框时的错误警告,即解决邮票孔的错误
  10. Python自动化 —— 大麦网自动抢购原价演唱会门票