功能介绍
官方提供的服务商微管家版本已满足大部分人使用,而且很适合学习和二次开发,抛砖引玉的告诉大家如何开始从三方平台接触微信开发、部署到云托管、二次开发其他应用等,具体功能参考官网的介绍。有能力的还是推荐使用官方的云托管
wx-open
是基于官方代码修改的本地化部署, 优先阅读官方文档 :服务商微管家介绍。
本项目初衷仅仅是为了让微管家能在本地或者其他云服务器运行,适合人群也仅仅是想省一点点时间的不太熟悉 Go 的开发者或者微管家现有功能部署就够用的人群。微信三方平台对接大致有两种,第一是直接撸一套三方接口,自己按需对接三方接口,这样最灵活也更方便发展其他业务(当然基于 wxcloudrun-wxcomponent 二次开发同理);第二是通过官方服务与业务系统集成 这个文档做业务集成。我们仅是把第二种思路放到本地部署,如果需要其他接口还是得做业务继承。大致思路是『微管家』可以通过内网把 token 或者 ticket 抛给自己的业务系统,业务系统自己按需请求三方其他接口。
主要变动
-
添加消息解密中间件,本地化部署,不在依赖云托管。
-
统一数据表开头为
wx
。 避免和自己其他业务数据表区分 -
配置文件不再区分
env
和server.conf
,统一在根目录调整config.conf
。 官方用env主要是为了结合云托管,部分参数在创建环境的时候设置,我们本地化部署后统一管理相对方便一些 -
前端新增
拉取部署微管家以前的授权数据
,修复一些其他小bug。 这个接口是官方预留的,原来只能通过postman自己跑一下,拿出来更方便操作一些
更新230809
升级方法:点击下载 wx-open。备份当前目录,覆盖 client 目录,wx-open 文件,按照 config_example.conf 文件自己删除掉本地 config.conf,最后重启服务。
-
优化后端日志打印
-
废弃配置文件里一些无用的配置项,对一些关键的配置做了详细的说明
-
废弃云托管一些判断逻辑
-
前端页面调整为本地部署相关信息
更新231017
目前我个人或者工作中并没有业务场景在用这个系统,新增接口是根据大家(挑)共(简)同(单)的需求开发的,基本没有在业务中测试,如果使用过程中发现 bug 微信或邮件联系反馈。讨论问题是相互学习的过程,所以有时候,你问了个问题,我大概是基于猜测给出的思路,所以也请尽量把这个猜测的结果反馈给我,以便于别的同学再遇到的同样问题的时候,我能及时回复或是根据你的反馈整理到这个文档里面方便其他同学去查,新增接口涉及到的文档去微信官方文档去看即可。区分新增内容的数据库表名以 wx_ 开头。后续如果还有需要新增的内容,我们还是尽量按照『微管家』现有服务去新增或者更新。
初次使用直接点击下载 wx-open 启动即可。老版本升级请备份当前目录,覆盖 client 目录和 wx-open 文件,config.conf 无需修改,重启服务即可。
|
|
-
『同步官方修改』授权链接
auth_type
更新为 6,文档参考这里 -
新增『代注册小程序』接口。 ~~ 听说通过这个接口可以省300大洋认证 ~~ ,有同学需要微管家支持,后来又有同学想把这个功能放到其他地方使用,所以这个接口也提供了内网服务接口。
-
新增『rid查询』接口。官方接口能查7天内的请求,我们会把你查过的请求记录,下次查的时候哪怕是超过7天,也会读出来。具体我也不清楚这个接口『辅助开发者高效定位问题』到底能不能解决问题。
-
新增『清空Api次数』接口。
使用方法
-
下载
Linux
文件[wx-open](https://pan.baidu.com/s/1lAT1QsqCmombFgdrf_IFqQ?pwd=zfdf)
根目录为最早起的版本,文件夹里的版本都是按照上面更新记录的版本,直接下载最新文件夹的版本部署就可以 -
重命名
config_example.conf
=>config.conf
,自行修改对应配置项,最终目录结构如下 -
运行
./wx-open
-
根据自己
ip+端口
或者域名
登陆后台,进入Secret与密码管理
修改第三方 Secret
,别忘了开https
|
|
- 内网端口是干什么用的?
内网服务主要用于二次开发或者对接自己其他业务系统,比如想接入微信三方平台的小程序代注册功能
,这时就会到微管家
内部服务接口获取需要的token
,内部服务包含获取component-access-token
,authorizer-access-token
和ticket
,例如:其他业务系统需要微信三方平台这两种token
或者ticket
,就可以通过内部服务免云管家的接口auth
调用。『切记:只有通过localhost
或者127.0.0.1
+端口访问!!!』
|
|
常见问题
-
关于配置文件的问题,建议多读官方文档
-
如果授权链接没有复制成功,应该是没有开 https 导致的。打开浏览器
控制台
,自己手动复制授权链接即可 -
配置文件仔细核对
-
端口被占用,修改配置文件即可
-
还有其他问题请提供测试服务器或者运行日志
-
拉取已授权账号失败,在
MySQL
运行select now();
查一下自己MySQL
配置的时区是否正常,不正常的话查下修改时区即可。
重申下 wx-open 的意义:仅作为官方开源版本的一种本地化部署方案。三方平台开放的接口越来越多,每个用户用到的接口和使用场景也不太相同,推荐的二次开发方式『利用wx-open项目提供的 token 接入其他三方接口』。前端单独部署原理是用 NGINX 把自己业务系统 API 相关路由的转发到其他端口。
前端源码
如果想在一个系统中完成其他前端页面,可以下载下面这个版本
使用方法
config.toml 的 IS_API 为 true,则 NGINX 配置需要调整成下面方式,此时前端项目发布不在需要重启 API 服务;如果为 false,则项目目录结构必须按照原来的结构(参考 wx-open 老版本),但 client/dist 目录可以替换成自己 build 后的文件。- 下载最新 wx-open-api.tar.gz API,修改 config.toml,新增 IS_API=true,否则会启动失败。
- 如果自己重新发布前端项目,自己只
build
前端代码即可,无需重启接口服务(强烈建议前后端分开部署,要么每次修改代码都得重启wx-open
)
Nginx参考
|
|
二次开发思路
-
首先要把上面的 Go的Api(后面统称wx-open)部署好,主要是让微信平台
callback
,稳定提供最新的小程序token。比如配置的域名是wx-open.com
-
本地用自己常用的开发语言(随便python/node/go/php/java) 起一个web服务(假设端口
8668
),在nginx
配置匹配到wx-open.com/api/python
这个uri
开头的服务都代理到8668
-
方案一 想用一套前端代码把所有三方平台的接口都接了
- 上面前端代码下载。
fork
后,自己本地开发即可
- 上面前端代码下载。
- 连老接口用`wx-open.com`
- 连自己新开发的接口用`wx-open.com/api/python/xxxx`
-
方案二 不想维护官方的前端代码,自己其他的业务逻辑都写到别的前端项目。
- 新起一个前端项目,其他开发思路同方案一。优点:新项目可以随便用
Vue
、React
以及其他UI组件库
- 新起一个前端项目,其他开发思路同方案一。优点:新项目可以随便用
在此非常感谢各位的啤酒/咖啡/可乐支持,不要超过 100,祝大家事业有成(名单更新不及时,见谅)。
时间 | 昵称 |
---|---|
2023-06-06 | 木子 |
2023-06-07 | 大猩猩 |
2023-10-12 | 叶子 |
2023-10-12 | 珧小珧 |
2023-10-12 | 阿鑫 |
2023-10-12 | 寒江雪 |
2023-10-12 | 雨ه٥ |
2023-10-12 | 蘑菇 |
2023-10-12 | ROBOT |
2023-10-12 | 年华不似水 |
2023-10-12 | 归去来 |