# R2 Auth

> R2-CLI 认证登录。当用户需要登录（login）、扫码、授权店铺、绑定平台（闲鱼/淘宝）、查看登录状态（auth status）、退出登录（logout）、Token 过期重新登录时使用此 skill。如果命令返回'请先登录'或'401'错误，也应触发此 skill。

- Skill: `round2ai/r2-auth` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add round2ai/r2-auth`
- Raw SKILL.md: https://api.skillmd.com/api/skills/round2ai/r2-auth/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: round2ai (https://skillmd.com/u/round2ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/round2ai/r2-auth

---


# R2-Auth (v1.1)

扫码登录 + 第三方平台授权（闲鱼/淘宝），专为 AI Agent 设计。

> **前置**：先读取 **r2-shared** skill（执行规则、版本检查、错误格式、Token 恢复）。

---

## 扫码登录（auth login）

### 一步式（推荐）

```bash
r2-cli auth login --json
```

命令自动轮询，不需要手动调用 `auth login poll`。依次输出两段 JSON：

**第 1 段：QR 信息（立即输出）**

```json
{
  "qrToken": "xxx",
  "expireTimeMs": 300000,
  "qrUrl": "http://127.0.0.1:52173/login/"
}
```

| 字段 | 说明 |
|------|------|
| `qrUrl` | 本地扫码页面链接（**必须先展示给用户**） |
| `expireTimeMs` | 过期时间（默认 5 分钟） |

**第 2 段：登录结果（用户扫码确认后输出）**

```json
{ "success": true, "userInfo": { "nickname": "...", "mobile": "..." } }
```

### Agent 操作步骤

1. 启动 `r2-cli auth login --json`（设置 5 分钟超时）
2. 读取输出，获取第 1 段 JSON
3. **必须先**将 `qrUrl` 醒目展示给用户：

   ```
   请在浏览器中打开此链接扫码登录：http://127.0.0.1:PORT/login/
   ```

4. **不要关闭/中断命令** — 正在自动轮询
5. 告知用户用**第二回合 APP / 微信 / 支付宝**扫描页面上的二维码
6. 等待第 2 段 JSON（最长 5 分钟）
7. 检查 `success` 判断结果

**为什么必须先展示链接**：浏览器自动打开在 Windows/远程/SSH 环境经常失败，`qrUrl` 是用户扫码的唯一保障。

---

## 第三方平台授权（auth platform）

授权第三方店铺，流程与登录类似：

```bash
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` 重新扫码登录 |

