微信token,jsapi-ticket微服务

[toc]

需求背景

  • 公众号token, jsapi_ticket获取时会自动覆盖之前生成的数值,这样在一个公众号被多个项目使用开发的背景下,容易导致项目之间各自获取token,jsapi_ticket覆盖彼此的问题存在。所以催生出利用中台服务单独配置公众号账号信息后,各个项目通过redis协议获取token, jsapi_ticket

编译

1
2
git clone https://github.com/jonnywang/goRedisWeixin
make

配置

1
2
3
4
5
6
7
8
[DEFAULT]
address=0.0.0.0:6788
data_file=/data/server/weixin/conf/data.dat

;获取别名
[boc]
app_id=
app_secret=

支持命令

1
2
3
4
5
6
7
8
9
token boc
ticket boc

强制重刷
token boc 1
ticket boc 1

保存
save

启动

1
./goRedisWeixin_linux --config=conf/server.ini

supervisor 配置示例

1
2
3
4
5
6
7
[program:wxTokenTicket]
command=/data/server/weixin/bin/goRedisWeixin_linux --config=/data/server/weixin/conf/server.ini
autorestart=true
autostart=true
redirect_stderr=true
stdout_logfile=/data/server/weixin/logs/weixin-stdout.log
stderr_logfile=/data/server/weixin/logs/weixin-stderr.log

代码使用

1
2
3
4
5
6
7
<?php
$redis_handle = new Redis();
$redis_handle->connect('127.0.0.1', 6788);
echo $redis_handle->rawCommand("token", "boc") . PHP_EOL;
echo $redis_handle->rawCommand("ticket", "boc") . PHP_EOL;
echo $redis_handle->rawCommand("token", "boc", 1) . PHP_EOL;
echo $redis_handle->rawCommand("ticket", "boc", 1) . PHP_EOL;