第三方集成参考

把你的应用连接到 TigerSystem 账户

TigerSystem 账户连接每一个应用和设备。你的应用、设备或 Home Assistant 通过 Firebase 原生接入:使用用户自己的凭据登录,读取其在 Firestore 中的线轴和料架,并写回重量。

GitHub ↗

$ GET  https://tigertag-cdn.web.app/__/firebase/init.json

POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={apiKey}
     { "email": "user@example.com", "password": "…", "returnSecureToken": true }
idToken 的有效期:请在过期前刷新
1 小时idToken 的有效期:请在过期前刷新
建议的最短轮询间隔
5 分钟建议的最短轮询间隔
字段重命名或移除前的最短弃用通知期
3 个月字段重命名或移除前的最短弃用通知期
每段代码片段的许可证:可直接粘贴到你的项目中,无需署名
Apache-2.0每段代码片段的许可证:可直接粘贴到你的项目中,无需署名

客户端如何连接 TigerSystem

每个客户端都遵循相同的四个步骤:获取公开的 Firebase 配置,以用户身份登录,使用用户的令牌调用 Firestore REST API,并保持该令牌有效。

获取公开配置

一次 GET 请求即可返回 Firebase 项目配置。apiKey 本来就是公开的:它标识的是项目,而不是调用方。请缓存它,每周刷新一次即可。

以用户身份登录

用户自己的邮箱和密码会返回一个 UID、一个有效期 1 小时的 idToken 和一个 refreshToken。Google Sign-In 需要浏览器,因此无界面客户端使用密码登录。

读写 Firestore

将 idToken 作为 Bearer 令牌发送。线轴位于 users/{uid}/inventory,料架位于 users/{uid}/racks;重量为净重(克),日期为 Unix 毫秒时间戳。

没有服务账户

每个客户端都使用最终用户自己的凭据登录。切勿在第三方客户端中包含 firebase-admin SDK 或任何管理员密钥。

由 Security Rules 决定

Firestore Security Rules 根据已登录用户检查每个请求:所有者读写自己的文档,好友可读取库存和料架,其余一律拒绝。

公开的约定

文档路径和字段名称保持稳定。重命名或移除字段至少提前 3 个月在更新日志中通知;新字段始终只增不改。

Home Assistant

一个自定义组件草案,为每个线轴提供一个传感器,以剩余重量(克)作为其状态。指南还涵盖好友库存、分页和令牌存储。

The TigerSystem apps and devices around one account

ESP32 电子秤或 NFC 设备

根据扫描到的 RFID UID 查找线轴(先 uid,再 twin_uid),计算净重,并通过更新掩码写入 weight_available 和 last_update。指南最后附有一个完整的 ESP32 程序(WiFi、ArduinoJson)。

Tiger NFC Connect on a phone

Python 脚本

一个基于 Pyrebase4 的极简 Python 客户端:登录,列出你的线轴,并显示每位好友拥有的线轴数量。指南包含完整脚本和一次运行示例。

常见问题

我需要服务账户或管理员密钥吗?

不需要。每个客户端都使用最终用户自己的 TigerSystem 邮箱和密码登录,由 Firestore Security Rules 决定该用户可以读取或写入什么。不存在共享的管理员密钥,并且绝不能在第三方客户端中使用 firebase-admin SDK。

为什么 Firebase apiKey 是公开的?

apiKey 标识的是 Firebase 项目,而不是调用方。如果没有以真实用户身份登录获得的有效 idToken,它无法访问任何内容;访问控制由身份验证和 Security Rules 完成。

Home Assistant 或 ESP32 可以使用 Google 登录吗?

不能直接登录:Google Sign-In 需要浏览器重定向。只使用过 Google 登录的用户需要先通过 Tiger Studio Manager 2 或 Tiger NFC Connect 的忘记密码流程为 TigerSystem 账户设置密码,然后再使用邮箱和密码登录。

我的集成可以多频繁地轮询?

传感器最高每 5 分钟一次,料架概览每 15 分钟一次,且绝不低于 30 秒。电子秤仅在重量变化时写入。列表读取应传入 limit:库存为 200,料架为 50。

我的集成可以读取好友的线材卷吗?

可以,只读。两位用户成为好友后,双方都会在 users/{uid}/friends 下拥有对方的文档,规则允许好友读取库存和料架。任何一方都可以随时解除好友关系,访问会立即被切断。

开始你的集成

选择适合你平台的指南,从登录一直走到第一次读取。文档所写即已部署的内容。

开始集成