Sign inSign up

gitree/authman

By gitree

•Updated about 4 hours ago

多平台广告账户 Token 自动管理服务

Image
Networking
0

33

gitree/authman repository overview

⁠AuthMan

多平台广告账户 Token 自动管理服务。集中托管百度营销、小红书、360、巨量引擎等平台的 accessToken / refreshToken,提供:

  • 🗂 统一存储:SQLite 落库,所有平台 token 一张表管理
  • 🔄 自动刷新:定时巡检(默认 10 分钟),失效自动用 refreshToken 续期
  • ⏰ 提前续期:accessToken 到期前 8 小时主动刷新
  • 🔗 OAuth 回调:内置 /auth/{platform} 回调入口,免手写对接代码
  • 🖥 可视后台:内置 SQLAdmin 管理界面,可搜索、编辑、删除
  • 📡 REST API:/get 一键导出全部数据,方便其它服务集成

⁠支持的平台

key平台授权入口
baidu百度营销/auth/baidu
xiaohongshu小红书/auth/xiaohongshu
360360/auth/qihoo
juliang巨量引擎/auth/juliang

新增平台只需在 app/platforms/ 下实现一个类并注册即可扩展。


⁠镜像标签

Tag说明
latest最新稳定版
x.y.z具体版本号
amd64 / arm64对应 CPU 架构

⁠快速开始

⁠1. 直接运行(docker run)
docker run -d \
  --name AuthMan \
  -p 8000:8000 \
  -v $(pwd)/data:/app/data \
  -e TZ=Asia/Shanghai \
  -e ADMIN_SECRET=change-me-please \
  gitree/AuthMan:beta

访问:

  • 管理后台 → http://localhost:8000/admin
  • 导出全部数据 → http://localhost:8000/get
  • 百度授权 → http://localhost:8000/auth/baidu
⁠2. docker-compose(推荐)
version: "3.9"

services:
  AuthMan:
    image: gitree/AuthMan:beta
    container_name: AuthMan
    restart: unless-stopped
    ports:
      - "8000:8000"
    environment:
      TZ: Asia/Shanghai
      ADMIN_SECRET: change-me-please
    volumes:
      - ./data:/app/data
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:8000/get"]
      interval: 60s
      timeout: 5s
      retries: 3
      start_period: 15s
docker compose up -d

⁠环境变量

变量默认值说明
TZUTC容器时区,建议 Asia/Shanghai
ADMIN_SECRETplease-change-meSQLAdmin 会话签名用,务必修改
DB_PATH/app/data/tokens.dbSQLite 数据库路径
CHECK_INTERVAL_MINUTES10巡检周期(分钟)
REFRESH_AHEAD_HOURS8到期前多少小时主动刷新
PORT8000监听端口

⁠数据持久化

容器内数据库固定位于 /app/data/tokens.db,必须挂载卷,否则重启会丢数据:

-v ./data:/app/data

备份只需拷贝这个目录:

cp -r ./data ./data-backup-$(date +%F)

⁠首次使用流程

  1. 改配置:把 ADMIN_SECRET 换成随机值
  2. 跑容器:docker compose up -d
  3. 填应用凭证:镜像内置的是占位符(如 REPLACE_WITH_BAIDU_CLIENT_ID),需通过环境变量或挂载自定义 app/platforms/ 目录覆盖
  4. 发起授权:浏览器访问 http://your-host:8000/auth/baidu
  5. 授权成功:返回 JSON 里带 accessToken,同时后台 /admin 能看到记录
  6. 等待巡检:每 10 分钟自动验证一次 token,失效自动刷新

⁠API 一览

方法路径说明
GET/get返回全部 token 数据(JSON)
GET/auth/{platform}发起授权(无 code 时跳转平台授权页)
GET/auth/{platform}?code=xxx平台 OAuth 回调,换 token 并入库
POST/refresh/{id}手动刷新指定记录
GET/check/now立刻触发一次巡检(调试用)
GET/admin可视化后台
⁠/get 返回示例
{
  "count": 2,
  "data": [
    {
      "id": 1,
      "platform": "baidu",
      "userId": "630152",
      "userName": "示例账户",
      "appId": "b25f6761...",
      "accessToken": "eyJhbGciOi...",
      "refreshToken": "eyJhbGciOi...",
      "accessTokenExpireTime": "2026-11-13 15:49:19",
      "refreshTokenExpireTime": "2026-12-13 15:49:19",
      "createAt": "2026-10-14 10:00:00",
      "updateAt": "2026-10-14 10:00:00"
    }
  ]
}

时间字段统一为北京时间(UTC+8),直接可读。


⁠日志

容器日志通过 stdout 输出:

docker logs -f AuthMan

关键日志样例:

========== 开始巡检 token ==========
id=1 将于 2026-11-13 15:49:19 到期,提前刷新
✅ 刷新成功 id=1 platform=baidu
========== 巡检完成:2 条,刷新 1 条 ==========

建议接入日志收集(Loki / ELK / CloudWatch)长期保留,排查问题更方便。


⁠常见问题

⁠Q: 后台显示的是 UTC 时间?

设置 TZ=Asia/Shanghai 环境变量并重启即可。数据库内存储的时间为北京时间字符串,与容器时区无关。

⁠Q: 巡检没有自动刷新?

检查:

  1. 容器启动日志是否有 调度器已启动
  2. docker logs AuthMan | grep 巡检
  3. 手动触发 /check/now 看是否有异常
⁠Q: 授权回调 404?

回调地址必须指向 可公网访问 的 URL,且路径为 /auth/{platform}。例如:

https://your-domain.com/auth/baidu

localhost 只适用于本机浏览器测试,平台服务器无法回调 localhost。

⁠Q: 如何升级?
docker compose pull
docker compose up -d

数据库结构如果发生变化,升级前请先备份 data/ 目录。

⁠Q: 数据能直接从宿主机打开吗?

可以。tokens.db 是标准 SQLite 文件,用任意 SQLite 客户端都能打开:

sqlite3 ./data/tokens.db "SELECT platform, userId, userName FROM Tokens;"

⁠安全提示

  • ⚠️ 默认无登录认证,只适合内网/受信任环境部署
  • ⚠️ accessToken / refreshToken / secretKey 均明文存储,生产环境建议:
    • 增加反向代理(Nginx / Traefik)+ Basic Auth 或 SSO
    • 数据库加密(SQLCipher)或迁移至支持加密的数据库
    • 不在公网直接暴露 8000 端口
  • ⚠️ 百度回调的 signature 验签逻辑需要按官方文档补齐

⁠源码 & 问题反馈

  • GitHub:https://github.com/gitree/AuthMan
  • Issues:https://github.com/gitree/AuthMan/issues

欢迎提交 PR 支持更多广告平台(巨量千川、腾讯广告、快手磁力等)。


⁠License

MIT

Tag summary

Content type

Image

Digest

sha256:50f6d550b…

Size

80.7 MB

Last updated

about 4 hours ago

docker pull gitree/authman:beta