用途
supsub-auth 是 SupSub CLI 的认证管理技能,用于完成登录、登出以及查看当前登录状态。它是使用其他 supsub 子命令前的凭证准备环节。
前置条件
安装方式二选一:
- native 安装:curl -fsSL https://raw.githubusercontent.com/SupSub-AI/supsub-cli/master/scripts/install.sh | bash(装到 ~/.local,支持后台自动更新)
- 包管理器:npm i -g @supsub/cli 或 pnpm add -g @supsub/cli
登录凭证保存在 ~/.supsub/config.json,目录权限 0700,文件权限 0600。
主要能力
登录
supsub auth login 会自动打开浏览器,走 OAuth 设备授权流程(Device Authorization),授权成功后把 access_token / refresh_token 写入 ~/.supsub/config.json。这是 CLI 唯一的登录方式,不支持 API Key 登录。
无头 / e2e 环境可跳过自动打开浏览器,手动复制终端里的链接去授权:
SUPSUB_NO_BROWSER=1 supsub auth login
JSON 模式(-o json)下,登录成功 stdout 输出:
{"success":true,"data":{"client_id":"supsub-cli","email":"...","name":"..."}}
其中 email / name 来自登录后拉取的用户信息;若拉取失败这两个字段缺省,退化为 {"client_id":"supsub-cli"};提示信息走 stderr。
查看状态
supsub auth status 显示当前登录用户、脱敏后的凭证及其来源。正常 OAuth 登录后 api_key_source 为 config(凭证来自配置文件里的 access_token);api_key 字段是脱敏后的访问令牌,CLI 沿用 sk_live_*** 前缀展示,并非真有 API Key。
supsub auth status -o json 的 JSON 形态:
{ "success": true, "data": { "email": "...", "name": "...", "client_id": "supsub-cli", "api_key_source": "config", "api_key": "sk_live_***xxxx" } }
未认证时以退出码 2(UNAUTHORIZED)退出,并提示用户运行 supsub auth login。
登出
supsub auth logout 会从 ~/.supsub/config.json 移除已保存的凭证。JSON 模式下输出 {"success":true,"data":{}}。
使用方式与凭证解析
请求所用的 Bearer 凭证由 resolveApiKey() 解析,优先级从高到低:配置文件 access_token(OAuth 设备授权令牌)> 配置文件 bearer_token(高级用法:手动从浏览器粘贴的临时会话 token)。
令牌自动续期:access_token 约 24 小时到期,CLI 在过期前(或收到 401 时)用 refresh_token 自动换新令牌并写回配置文件,全程无感。refresh_token 约 14 天有效,只有它也失效时才需要重新 supsub auth login。
401 响应的处理逻辑(见 src/http/token-refresh.ts):
- 续期成功:命令正常返回,用户无感,无需重新登录。
- refresh_token 也已失效:清除全部凭证(clearAuth())并以退出码 2 退出,此时才需要重新 supsub auth login。
- 续期请求本身网络异常 / 服务端 5xx:凭证保留不清,以退出码 10(NETWORK)退出,稍后重试即可,不要据此让用户重新登录。
自定义 API base URL:设置 SUPSUB_API_URL(默认 https://supsub.net),用于本地或测试环境。
常见退出码:0 OK,2 UNAUTHORIZED,3 PLAN_EXPIRED,10 NETWORK,11 SERVER,64 INVALID_ARGS。解析 JSON 时使用 -o json。
适用场景
- 首次使用 SupSub CLI 前完成浏览器授权登录。
- 查询当前使用的 SupSub 账号、凭证来源与脱敏令牌。
- 在无头 / 自动化环境中通过 SUPSUB_NO_BROWSER=1 手动完成授权。
- 在本地或测试环境通过 SUPSUB_API_URL 指向自定义 API 地址。
限制
- 登录唯一入口是 supsub auth login,不支持 API Key 登录,没有 --api-key flag 或 SUPSUB_API_KEY 环境变量。
- 其他细节(如账号体系、套餐、计费、平台支持范围等)资料暂未提供。