yqcloud-login-auth
YQCloud OAuth 登录认证
概述
通过 OAuth 隐式授权流程(Implicit Grant)登录燕千云平台,获取 access_token。启动临时本地 HTTP 服务器作为回调地址,用户在浏览器中完成登录后,token 自动保存到 ~/.yqcloud_tmp/token.json。
触发条件
当用户需要:
- 登录燕千云 / YQCloud
- 获取 YQCloud access_token
- 提到"燕千云认证"、"yqcloud 登录"、"yqcloud token"
- 其他 skill 依赖 YQCloud token 且 token 不存在或已过期
认证流程
用户触发 → 启动本地服务器(端口49658) → 打开浏览器 → 用户登录
→ OAuth 回调携带 token → 前端提取并发送到服务器 → 存储 token → 服务器关闭
Token 存储
- 目录:
~/.yqcloud_tmp/ - 文件:
~/.yqcloud_tmp/token.json - 格式:
{
"access_token": "d39a5a21-0e6d-4958-8f58-974b07e5d8c5",
"token_type": "bearer",
"state": "",
"expires_in": "315359994",
"refresh_token": "b00bb352-cdbe-44d1-986a-06fdc0edb2fe",
"scope": "default"
}
执行步骤
1. 检查现有 Token
先检查是否已有有效 token:
cat ~/.yqcloud_tmp/token.json 2>/dev/null
如果 token 已存在,询问用户是否需要重新认证。
2. 执行认证
运行 OAuth 认证服务器脚本:
python3 "$(dirname "$0")/../skills/yqcloud-login-auth/scripts/oauth_server.py"
脚本行为:
- 在
localhost:49658启动临时 HTTP 服务器 - 自动打开浏览器访问 OAuth 授权页面
- 用户在浏览器中登录燕千云
- OAuth 回调将 token 通过 URL hash fragment 传回
- 前端 JavaScript 提取 token 并 POST 到服务器
- 服务器将 token 存储到
~/.yqcloud_tmp/token.json - 页面显示"认证成功",服务器自动关闭
3. 验证 Token
认证完成后验证 token 是否可用:
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $(cat ~/.yqcloud_tmp/token.json | python3 -c 'import sys,json; print(json.load(sys.stdin)["access_token"])')" \
https://support.yqcloud.com/oauth/api/user
返回 200 表示 token 有效。
在其他脚本中使用 Token
读取已保存的 token:
ACCESS_TOKEN=$(python3 -c 'import json; print(json.load(open("'$HOME'/.yqcloud_tmp/token.json"))["access_token"])')
import json
from pathlib import Path
token_file = Path.home() / ".yqcloud_tmp" / "token.json"
token_data = json.loads(token_file.read_text())
access_token = token_data["access_token"]
故障排查
端口被占用
如果 49658 端口被占用:
lsof -i :49658
kill -9 <PID>
然后重新运行认证脚本。
浏览器未自动打开
手动在浏览器中访问:
https://support.yqcloud.com/oauth/oauth/authorize?response_type=token&client_id=support&state=&redirect_uri=http%3A%2F%2Flocalhost%3A49658
Token 文件不存在
确认认证流程是否完成。如果浏览器页面未显示"认证成功",可能是:
- 网络问题导致 OAuth 授权页面无法加载
- 用户取消了登录
- 回调服务器已提前关闭(Ctrl+C)
执行流程(给 Agent 参考)
- 使用 Bash 检查
~/.yqcloud_tmp/token.json是否存在 - 如果存在,使用 Read 读取并展示 token 概要(mask 敏感信息),使用 AskUserQuestion 询问是否重新认证
- 如果需要认证,使用 Bash 运行
python3 <skill_path>/scripts/oauth_server.py(注意:此命令会阻塞直到认证完成或用户中断) - 认证完成后,使用 Read 读取
~/.yqcloud_tmp/token.json确认 token 已保存 - 向用户报告认证结果
More from binjie09/zknow-skills
gemini-image
使用 Gemini 图像生成 API 生成或修改图片。支持自定义 API Key 和 Base URL。
17think-carefully
不管回答什么问题,都要仔细思考。在回答任何问题或执行任何任务之前,先深入分析和推理。
15global-agent-rules
全局 Agent 规则,包含语言、回复风格、调试优先级、工程质量基线、代码度量硬性限制、安全基线、测试验证标准和 Skills 路由表。适用于所有编程任务。
15yqcloud-function-calling
YQCloud 自定义 Function Calling 格式说明。定义了一套 JSON 格式用于声明 AI 可调用的函数,运行时由 yqcloud-ai-node 执行 HTTP 请求并返回结果。涵盖 ITSM 工单场景和知识库查询场景。
12yqcloud-deploy
燕千云部署管理工具。用于查询 ChartMuseum 中的 Helm Chart 版本、管理 GitOps 仓库部署配置、修改环境变量和 chartVersion。当用户需要:(1) 查询某个服务的可用 chart 版本,(2) 部署或更新服务到不同环境(test/preprod/stag),(3) 修改部署配置或环境变量,(4) 查看当前部署状态时使用此技能。
11opencode-setup
OpenCode 安装和配置指南。用于安装 OpenCode 并配置使用自定义 Anthropic API 渠道(ZKnow)。当用户需要安装或配置 OpenCode 连接到自定义 API 端点时使用此技能。
3