- 管理后台: https://9cfc812e.ai-api-docs-bim.pages.dev/admin.html
- API 网关: https://ai-api-proxy.2358314123.workers.dev
参考 Kiro-account-manager 项目,我们实现了完整的 OIDC JSON 批量导入功能,让你可以一次性导入多个 Kiro 账号。
- ✅ 批量导入 - 一次导入多个 OIDC 账号
- ✅ JSON 验证 - 导入前验证数据格式和必填字段
- ✅ 重复检测 - 自动跳过已存在的账号
- ✅ 详细报告 - 显示成功/失败的账号列表
- ✅ 错误提示 - 清晰的错误信息帮助排查问题
- ✅ 兼容格式 - 支持单个对象或数组格式
[
{
"email": "user1@example.com",
"region": "us-east-1",
"clientId": "your-client-id-1",
"clientSecret": "your-client-secret-1",
"refreshToken": "your-refresh-token-1",
"accessToken": "current-access-token-1"
},
{
"email": "user2@example.com",
"region": "us-west-2",
"clientId": "your-client-id-2",
"clientSecret": "your-client-secret-2",
"refreshToken": "your-refresh-token-2"
}
]{
"email": "user@example.com",
"region": "us-east-1",
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"refreshToken": "your-refresh-token",
"accessToken": "current-access-token",
"idToken": "your-id-token",
"expiresAt": 1733097600000,
"enabled": true
}| 字段 | 必填 | 说明 | 示例 |
|---|---|---|---|
email |
✅ | 账号邮箱 | user@example.com |
clientId |
✅ | OIDC Client ID | xxxxxxxxxx |
clientSecret |
✅ | OIDC Client Secret | xxxxxxxxxx |
refreshToken |
✅ | 刷新 Token | eyJ... |
region |
❌ | AWS 区域 | us-east-1 (默认) |
accessToken |
❌ | 当前访问 Token | eyJ... |
idToken |
❌ | ID Token | eyJ... |
expiresAt |
❌ | 过期时间戳 | 1733097600000 |
enabled |
❌ | 是否启用 | true (默认) |
如果你使用 Kiro-account-manager:
- 打开 Kiro-account-manager
- 选择要导出的账号
- 导出为 JSON 格式
- 复制 JSON 内容
创建一个 JSON 文件,格式参考上面的示例:
[
{
"email": "account1@gmail.com",
"clientId": "abc123",
"clientSecret": "secret123",
"refreshToken": "eyJraWQiOi..."
},
{
"email": "account2@gmail.com",
"clientId": "def456",
"clientSecret": "secret456",
"refreshToken": "eyJraWQiOi..."
}
]访问:https://9cfc812e.ai-api-docs-bim.pages.dev/admin.html
- 点击 "设置" 标签
- 填写:
- 管理员密钥:
kiro-admin-2024 - Worker 地址:
https://ai-api-proxy.2358314123.workers.dev
- 管理员密钥:
- 点击 "保存设置"
- 点击 "添加 Kiro 账号" 标签
- 滚动到 "📦 批量导入 OIDC JSON" 部分
- 将 JSON 数据粘贴到文本框
- 点击 "验证 JSON" 按钮(可选,但推荐)
- 确认无误后,点击 "批量导入" 按钮
导入完成后会显示:
- 总数:尝试导入的账号数量
- 成功:成功导入的账号列表
- 失败:失败的账号及错误原因
端点: POST /admin/accounts/kiro/batch
请求头:
Authorization: Bearer kiro-admin-2024
Content-Type: application/json
请求体:
[
{
"email": "user@example.com",
"clientId": "xxx",
"clientSecret": "xxx",
"refreshToken": "xxx"
}
]响应示例:
{
"success": true,
"results": {
"total": 3,
"success": [
{
"email": "user1@example.com",
"id": "a1b2c3d4-..."
},
{
"email": "user2@example.com",
"id": "e5f6g7h8-..."
}
],
"failed": [
{
"email": "user3@example.com",
"error": "Account already exists"
}
]
},
"message": "Imported 2 accounts, 1 failed"
}curl -X POST https://ai-api-proxy.2358314123.workers.dev/admin/accounts/kiro/batch \
-H "Authorization: Bearer kiro-admin-2024" \
-H "Content-Type: application/json" \
-d '[
{
"email": "user1@example.com",
"clientId": "client-id-1",
"clientSecret": "client-secret-1",
"refreshToken": "refresh-token-1"
},
{
"email": "user2@example.com",
"clientId": "client-id-2",
"clientSecret": "client-secret-2",
"refreshToken": "refresh-token-2"
}
]'const accounts = [
{
email: 'user1@example.com',
clientId: 'client-id-1',
clientSecret: 'client-secret-1',
refreshToken: 'refresh-token-1'
},
{
email: 'user2@example.com',
clientId: 'client-id-2',
clientSecret: 'client-secret-2',
refreshToken: 'refresh-token-2'
}
];
const response = await fetch('https://ai-api-proxy.2358314123.workers.dev/admin/accounts/kiro/batch', {
method: 'POST',
headers: {
'Authorization': 'Bearer kiro-admin-2024',
'Content-Type': 'application/json'
},
body: JSON.stringify(accounts)
});
const result = await response.json();
console.log(result);原因: 该邮箱的账号已经存在
解决:
- 从 JSON 中移除该账号
- 或先删除已存在的账号
原因: 账号数据中缺少 email 字段
解决: 确保每个账号都有 email 字段
原因: OIDC 账号缺少 clientId 或 clientSecret
解决: 确保提供完整的 OIDC 认证信息
原因: JSON 语法不正确
解决:
- 使用在线 JSON 验证器检查格式
- 确保所有字符串用双引号
- 检查逗号和括号是否匹配
原因: 可能是网络问题或服务器错误
解决:
- 检查管理员密钥是否正确
- 检查 Worker 地址是否正确
- 查看浏览器控制台错误信息
批量导入会执行以下验证:
- ✅
email- 必须存在 - ✅
clientId- OIDC 账号必须 - ✅
clientSecret- OIDC 账号必须 - ✅
refreshToken- OIDC 账号必须
- ✅ 检查邮箱是否已存在
- ✅ 只检查 provider='kiro' 的账号
- ✅ JSON 格式是否正确
- ✅ 支持数组或单个对象
使用 "验证 JSON" 按钮先检查数据格式,确保无误后再导入。
建议每次导入 10-20 个账号,避免一次性导入过多导致超时。
导入前保存一份原始 JSON 数据,以便导入失败时重试。
导入完成后仔细查看结果报告,确认所有账号都成功导入。
导入后在 "账号管理" 页面检查账号状态,必要时刷新 Token。
| 功能 | 单个添加 | 批量导入 |
|---|---|---|
| 速度 | 慢 | 快 |
| 适用场景 | 1-2 个账号 | 3+ 个账号 |
| 操作复杂度 | 低 | 中 |
| 错误提示 | 即时 | 汇总报告 |
| 重复检测 | ✅ | ✅ |
| 支持格式 | 表单 | JSON |
[
{
"email": "test@example.com",
"clientId": "abc123",
"clientSecret": "secret123",
"refreshToken": "eyJ..."
}
][
{
"email": "user@example.com",
"region": "us-east-1",
"clientId": "abc123",
"clientSecret": "secret123",
"refreshToken": "eyJraWQi...",
"accessToken": "eyJhbGci...",
"idToken": "eyJhbGci...",
"expiresAt": 1733097600000,
"enabled": true
}
][
{
"email": "us-user@example.com",
"region": "us-east-1",
"clientId": "us-client-id",
"clientSecret": "us-secret",
"refreshToken": "us-refresh-token"
},
{
"email": "eu-user@example.com",
"region": "eu-west-1",
"clientId": "eu-client-id",
"clientSecret": "eu-secret",
"refreshToken": "eu-refresh-token"
},
{
"email": "asia-user@example.com",
"region": "ap-northeast-1",
"clientId": "asia-client-id",
"clientSecret": "asia-secret",
"refreshToken": "asia-refresh-token"
}
]位置: worker-kiro.js
端点: POST /admin/accounts/kiro/batch
关键特性:
- ✅ 支持数组和单个对象
- ✅ 自动去重检测
- ✅ 详细的错误报告
- ✅ 原子性操作(每个账号独立处理)
- ✅ UUID 自动生成
位置: public/admin.html
关键功能:
- ✅ JSON 语法高亮文本框
- ✅ 实时验证
- ✅ 导入结果可视化
- ✅ 成功/失败分类显示
- ✅ 一键清空
- 项目主页: FINAL_SUCCESS.md
- Kiro 指南: KIRO_GUIDE.md
- 快速参考: QUICK_REFERENCE.md
- Web 界面指南: WEB_DEPLOYMENT_COMPLETE.md
批量导入功能让你可以:
- ⚡ 快速导入 - 一次导入多个账号,节省时间
- 🔍 自动验证 - 导入前检查数据格式
- 📊 详细报告 - 清晰了解导入结果
- 🔒 安全可靠 - 重复检测,防止数据冲突
立即体验: https://9cfc812e.ai-api-docs-bim.pages.dev/admin.html
有任何问题随时告诉我! 💪