name: r2-auth version: 1.1.0 description: "R2-CLI 认证登录。当用户需要登录(login)、扫码、授权店铺、绑定平台(闲鱼/淘宝)、查看登录状态(auth status)、退出登录(logout)、Token 过期重新登录时使用此 skill。如果命令返回'请先登录'或'401'错误,也应触发此 skill。" metadata: requires: bins: ["r2-cli"] cliHelp: "r2-cli auth --help" related: - "r2-shared"
R2-Auth (v1.1)
扫码登录 + 第三方平台授权(闲鱼/淘宝),专为 AI Agent 设计。
前置:先读取 r2-shared skill(执行规则、版本检查、错误格式、Token 恢复)。
扫码登录(auth login)
一步式(推荐)
r2-cli auth login --json
命令自动轮询,不需要手动调用 auth login poll。依次输出两段 JSON:
第 1 段:QR 信息(立即输出)
{
"qrToken": "xxx",
"expireTimeMs": 300000,
"qrUrl": "http://127.0.0.1:52173/login/"
}
| 字段 | 说明 |
|---|---|
qrUrl |
本地扫码页面链接(必须先展示给用户) |
expireTimeMs |
过期时间(默认 5 分钟) |
第 2 段:登录结果(用户扫码确认后输出)
{ "success": true, "userInfo": { "nickname": "...", "mobile": "..." } }
Agent 操作步骤
启动
r2-cli auth login --json(设置 5 分钟超时)读取输出,获取第 1 段 JSON
必须先将
qrUrl醒目展示给用户:请在浏览器中打开此链接扫码登录:http://127.0.0.1:PORT/login/不要关闭/中断命令 — 正在自动轮询
告知用户用第二回合 APP / 微信 / 支付宝扫描页面上的二维码
等待第 2 段 JSON(最长 5 分钟)
检查
success判断结果
为什么必须先展示链接:浏览器自动打开在 Windows/远程/SSH 环境经常失败,qrUrl 是用户扫码的唯一保障。
第三方平台授权(auth platform)
授权第三方店铺,流程与登录类似:
r2-cli auth platform --name xianyu --json # 闲鱼
r2-cli auth platform --name taobao --json # 淘宝
第 1 段:{ "state": "xxx", "qrUrl": "http://127.0.0.1:PORT/login-xianyu/", "expireTimeMs": 300000 }
第 2 段:{ "success": true, "shopId": "...", "shopName": "..." }
Agent 操作步骤与登录相同:启动 → 获取 QR → 先展示 qrUrl → 不中断,等待结果。
| 平台 | --name 值 | 授权后用途 |
|---|---|---|
| 闲鱼 | xianyu |
选品上架、挂售、改价、编辑 |
| 淘宝 | taobao |
阿里资产上架、SPU/SKU 管理 |
什么时候需要授权:使用某平台命令时返回"没有已授权的店铺",需先执行对应平台授权。
其他命令
| 命令 | 说明 |
|---|---|
r2-cli auth status |
查看登录状态 |
r2-cli auth logout |
退出登录 |
错误处理
统一错误格式和常见错误恢复见 r2-shared skill。
401 自动刷新:CLI 收到 401 时会自动用本地
refreshToken调/user/refresh换新 token 并透明重试,Agent 通常无感知。只有当命令最终返回登录已过期/请重新登录时(即 refreshToken 也失效),才需要引导用户重新扫码登录。
| 错误 | 恢复 |
|---|---|
二维码已过期 |
扫码超时,重新执行命令 |
授权链接已过期 |
授权超时,重新执行 auth platform --name <平台> |
网络连接失败 |
检查网络连接 |
登录已过期 / 请重新登录 |
自动刷新已失败 → 执行 r2-cli auth login --json 重新扫码登录 |