refactor: 重构 token 管理,新增 NATS adapter 和多示例

按照 TOKEN_REFACTOR.md / FIX_CONFIG.md 方案重构核心层:
- miot: Init() 优先读 storage token,新增 RefreshAuthInfo() 和刷新回调
- xiaomi: Config 改用 AuthInfo 结构体(含 UUID/UID/DataDir/OnTokenRefreshed)
- xiaomi: NewClient(ctx, Config) 新签名,新增 RefreshToken(),后台自动刷新
- xiaomi/devices: 设备控制接口重构
- 新增示例 12_ac_subscribe,其余示例适配新 Config
This commit is contained in:
2026-06-30 12:16:49 +08:00
parent a3d94c4b9f
commit 8ffc9e4e44
33 changed files with 1019 additions and 593 deletions
+17 -7
View File
@@ -1,10 +1,20 @@
package xiaomi
// Config 客户端初始化配置。
// AccessToken 必填,UUID/UID 对 MIPS 客户端和 cert 初始化有帮助。
type Config struct {
ClientSecret string // OAuth Client Secret
AccessToken string // OAuth Access Token
UID string // 小米账号 UID(选填,用于 cert 初始化)
UUID string // MQTT 客户端标识(选填,空则自动生成)
// AuthInfo OAuth token 信息。
type AuthInfo struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
ExpiresIn int `json:"expires_in"` // 有效期(秒)
ExpiresTS int64 `json:"expires_ts"` // 过期时间戳(unix),0 则内部按 expires_in 计算
}
// Config 客户端初始化配置。
type Config struct {
AuthInfo AuthInfo // OAuth token 信息
UUID string // MIPS 设备标识,OAuth 前生成,永久不可变
UID string // 小米帐号 UID,OAuth 后从 API 获取
DataDir string // 存储根路径(token/设备/SPEC 缓存),多用户场景每个用户用不同目录,如 ./data/{uid}
// OnTokenRefreshed 后台自动刷新成功时回调,供调用方将新 token 持久化到数据库。
OnTokenRefreshed func(accessToken, refreshToken string)
}