{"skill":{"slug":"clawhub-login","displayName":"ClawHub Login Helper","summary":"帮助无头服务器通过手动 OAuth 流程登录 ClawHub，生成授权 URL 并验证回调完成认证，避免浏览器启动失败。","description":"# clawhub-login\n\n**ClawHub OAuth 登录助手 - 无头服务器专用**\n\n**version:** 1.0.0  \n**author:** 大总管  \n**description:** 帮助在无头服务器上通过 OAuth 方式登录 ClawHub，解决浏览器认证问题\n\n---\n\n## 问题场景\n\n在无头服务器（无浏览器）上使用 `clawhub login` 时：\n- 默认会尝试打开浏览器 → 失败 (`spawn xdg-open ENOENT`)\n- 需要手动获取授权 URL → 在本地浏览器打开 → 完成认证\n\n本 skill 自动化这个流程。\n\n---\n\n## 使用方法\n\n### 方式 1：交互式（推荐）\n\n```bash\npython3 ~/.openclaw/workspace/skills/clawhub-login/scripts/clawhub_login.py\n```\n\n按提示操作：\n1. 复制输出的授权 URL\n2. 在本地浏览器打开\n3. 授权后复制回调 URL\n4. 粘贴到服务器完成登录\n\n### 方式 2：命令行\n\n```bash\n# 获取授权 URL\npython3 ~/.openclaw/workspace/skills/clawhub-login/scripts/clawhub_login.py --get-url\n\n# 验证登录状态\npython3 ~/.openclaw/workspace/skills/clawhub-login/scripts/clawhub_login.py --check\n\n# 退出登录\npython3 ~/.openclaw/workspace/skills/clawhub-login/scripts/clawhub_login.py --logout\n```\n\n---\n\n## 完整流程\n\n### 步骤 1：运行脚本\n\n```bash\n$ python3 scripts/clawhub_login.py\n\n🔐 ClawHub OAuth 登录助手\n\n检测到无头环境，使用手动授权模式...\n\n1. 打开以下 URL（复制到本地浏览器）：\n   https://clawhub.ai/cli/auth?redirect_uri=...&state=xxx\n\n2. 授权后，复制浏览器显示的 URL\n\n3. 粘贴回调 URL：\n```\n\n### 步骤 2：在本地浏览器打开 URL\n\n- 点击授权\n- 浏览器会跳转到回调页面\n- 复制完整的回调 URL\n\n### 步骤 3：粘贴到服务器\n\n```bash\n粘贴回调 URL：https://clawhub.ai/cli/auth/callback?code=xxx&state=xxx\n\n✅ 登录成功！欢迎 @mengwuzhi\n```\n\n---\n\n## 在 OpenClaw 中使用\n\n```bash\n# 让 agent 帮你登录\nopenclaw agent --message \"帮我登录 ClawHub\"\n```\n\nAgent 会：\n1. 运行 `clawhub login` 获取授权 URL\n2. 输出 URL 让你复制到本地浏览器\n3. 等待你提供回调 URL\n4. 完成登录\n\n---\n\n## 技术原理\n\nClawHub 使用 OAuth 2.0 流程：\n\n```\n1. CLI 生成授权 URL（含 state 参数）\n   ↓\n2. 用户在浏览器打开并授权\n   ↓\n3. ClawHub 重定向到回调 URL（含 code）\n   ↓\n4. CLI 用 code 交换 token\n   ↓\n5. Token 保存到 ~/.clawhub/token\n```\n\n---\n\n## 故障排查\n\n### 问题：`xdg-open ENOENT`\n\n**原因：** 无头服务器没有图形界面\n\n**解决：** 使用本 skill 的手动授权模式\n\n### 问题：回调 URL 无效\n\n**原因：** 授权已过期或 state 不匹配\n\n**解决：** 重新运行脚本获取新的授权 URL\n\n### 问题：登录状态丢失\n\n**原因：** Token 文件被删除或过期\n\n**解决：** 重新登录\n\n---\n\n## 相关文件\n\n| 文件 | 路径 |\n|------|------|\n| Token 存储 | `~/.clawhub/token` |\n| Token 配置 | `~/.config/clawhub/config.json` |\n\n---\n\n## 安全提示\n\n- ⚠️ Token 相当于密码，不要分享\n- ⚠️ 定期更新 Token（重新登录）\n- ⚠️ 不要在公共电脑上保存 Token\n\n---\n\n## 基于实战经验\n\n本 skill 基于 2026-02-28 在无头服务器上登录 ClawHub 发布 `create-openclaw-agent` skill 的实战经验总结。\n\n---\n\n## 许可证\n\nMIT License\n\n---\n\n**作者备注：** 这是第一个专门解决 ClawHub 无头登录问题的 skill。\n","tags":{"auth":"1.0.0","cli":"1.0.0","latest":"1.0.0","login":"1.0.0","oauth":"1.0.0"},"stats":{"comments":0,"downloads":695,"installsAllTime":2,"installsCurrent":2,"stars":0,"versions":1},"createdAt":1772262536254,"updatedAt":1778491667475},"latestVersion":{"version":"1.0.0","createdAt":1772262536254,"changelog":"初始版本，解决无头服务器 OAuth 登录问题","license":null},"metadata":null,"owner":{"handle":"mengwuzhi","userId":"s17e1gvambfkcpg8b16gkk5wcd83wrt7","displayName":"mengwuzhi","image":"https://avatars.githubusercontent.com/u/16465718?v=4"},"moderation":null}