VvvebJs / github-token-helper.html
CatPtain's picture
Upload 10 files
676a3be verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>GitHub Token 权限配置助手</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.permission-card {
border-left: 4px solid #007bff;
transition: all 0.3s ease;
}
.permission-required {
border-left-color: #28a745;
background-color: #f8fff9;
}
.permission-optional {
border-left-color: #ffc107;
background-color: #fefdf5;
}
.permission-not-needed {
border-left-color: #dc3545;
background-color: #fff5f5;
}
.step-number {
background: linear-gradient(45deg, #007bff, #0056b3);
color: white;
border-radius: 50%;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
}
.checklist-item {
padding: 8px 0;
border-bottom: 1px solid #eee;
}
.token-example {
font-family: monospace;
background: #f8f9fa;
padding: 4px 8px;
border-radius: 4px;
border: 1px solid #dee2e6;
}
</style>
</head>
<body>
<div class="container mt-4">
<div class="row">
<div class="col-md-10 mx-auto">
<div class="text-center mb-5">
<h1 class="display-4">🔑 GitHub Token 权限配置助手</h1>
<p class="lead">为 VvvebJs 配置正确的 GitHub 访问权限</p>
</div>
<!-- 快速开始 -->
<div class="card mb-4 border-primary">
<div class="card-header bg-primary text-white">
<h3 class="mb-0">⚡ 快速开始</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<h5>👈 我是新手</h5>
<p class="text-muted">第一次配置 GitHub Token</p>
<a href="https://github.com/settings/tokens/new" target="_blank" class="btn btn-outline-primary">
🚀 创建新 Token
</a>
</div>
<div class="col-md-6">
<h5>🔧 我需要排查问题</h5>
<p class="text-muted">Token 已创建但有问题</p>
<a href="github-test.php" class="btn btn-outline-warning">
🧪 测试现有配置
</a>
</div>
</div>
</div>
</div>
<!-- 步骤指导 -->
<div class="row">
<!-- 步骤1 -->
<div class="col-md-6 mb-4">
<div class="card h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<div class="step-number me-3">1</div>
<h4 class="mb-0">访问 GitHub 设置</h4>
</div>
<ol>
<li>登录 <a href="https://github.com" target="_blank">GitHub</a></li>
<li>点击右上角头像 → Settings</li>
<li>左侧菜单 → Developer settings</li>
<li>Personal access tokens → Tokens (classic)</li>
<li>Generate new token (classic)</li>
</ol>
<a href="https://github.com/settings/tokens" target="_blank" class="btn btn-primary btn-sm">
🔗 直接跳转
</a>
</div>
</div>
</div>
<!-- 步骤2 -->
<div class="col-md-6 mb-4">
<div class="card h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<div class="step-number me-3">2</div>
<h4 class="mb-0">填写基本信息</h4>
</div>
<div class="mb-3">
<label class="form-label"><strong>Note (描述):</strong></label>
<div class="token-example">VvvebJs Website Editor</div>
</div>
<div class="mb-3">
<label class="form-label"><strong>Expiration (过期时间):</strong></label>
<div class="text-success">推荐: 90 days</div>
<small class="text-muted">平衡安全性和便利性</small>
</div>
</div>
</div>
</div>
</div>
<!-- 权限选择 -->
<div class="card mb-4">
<div class="card-header">
<div class="d-flex align-items-center">
<div class="step-number me-3">3</div>
<h3 class="mb-0">选择权限范围 (Scopes)</h3>
</div>
</div>
<div class="card-body">
<div class="alert alert-warning">
<strong>⚠️ 重要:</strong> 必须勾选 <code>repo</code> 权限,这是 VvvebJs 保存文件的基础要求。
</div>
<!-- 必需权限 -->
<div class="permission-card permission-required card mb-3">
<div class="card-header">
<h5 class="text-success mb-0">✅ 必需权限</h5>
</div>
<div class="card-body">
<div class="form-check">
<input class="form-check-input" type="checkbox" checked disabled>
<label class="form-check-label">
<strong>repo</strong> - Full control of private repositories
</label>
</div>
<small class="text-muted ms-4">
包含: repo:status, repo_deployment, public_repo, repo:invite<br>
<strong>用途:</strong> 创建、读取、更新网页文件
</small>
</div>
</div>
<!-- 可选权限 -->
<div class="permission-card permission-optional card mb-3">
<div class="card-header">
<h5 class="text-warning mb-0">⚠️ 可选权限</h5>
</div>
<div class="card-body">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox">
<label class="form-check-label">
<strong>workflow</strong> - Update GitHub Action workflows
</label>
</div>
<small class="text-muted ms-4 d-block mb-3">
<strong>用途:</strong> 如果您计划使用 GitHub Actions 自动部署
</small>
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox">
<label class="form-check-label">
<strong>write:packages / read:packages</strong> - Package registry access
</label>
</div>
<small class="text-muted ms-4 d-block">
<strong>用途:</strong> 如果您需要管理 GitHub Packages
</small>
</div>
</div>
<!-- 不需要的权限 -->
<div class="permission-card permission-not-needed card">
<div class="card-header">
<h5 class="text-danger mb-0">❌ 不需要的权限</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<ul class="list-unstyled">
<li>❌ admin:repo_hook</li>
<li>❌ admin:org</li>
<li>❌ admin:public_key</li>
<li>❌ gist</li>
</ul>
</div>
<div class="col-md-6">
<ul class="list-unstyled">
<li>❌ notifications</li>
<li>❌ user</li>
<li>❌ delete_repo</li>
<li>❌ admin:org_hook</li>
</ul>
</div>
</div>
<small class="text-muted">
<strong>原因:</strong> VvvebJs 只需要读写文件,不需要管理权限
</small>
</div>
</div>
</div>
</div>
<!-- 配置示例 -->
<div class="card mb-4">
<div class="card-header">
<div class="d-flex align-items-center">
<div class="step-number me-3">4</div>
<h3 class="mb-0">配置环境变量</h3>
</div>
</div>
<div class="card-body">
<div class="alert alert-info">
<strong>📋 获取 Token 后,在 Hugging Face Space Settings 中添加这些环境变量:</strong>
</div>
<div class="row">
<div class="col-md-6">
<h5>🔑 GitHub 认证</h5>
<div class="bg-light p-3 rounded">
<code>GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code><br>
<code>GITHUB_OWNER=your_username</code><br>
<code>GITHUB_REPO=your_repo_name</code><br>
</div>
</div>
<div class="col-md-6">
<h5>⚙️ 存储配置</h5>
<div class="bg-light p-3 rounded">
<code>GITHUB_BRANCH=main</code><br>
<code>GITHUB_PATH=pages/</code><br>
<code>STORAGE_TYPE=github</code><br>
</div>
</div>
</div>
<div class="mt-3">
<h6>📝 配置说明:</h6>
<ul>
<li><code>GITHUB_TOKEN</code>: 刚创建的 40 字符 Token (以 ghp_ 开头)</li>
<li><code>GITHUB_OWNER</code>: 您的 GitHub 用户名</li>
<li><code>GITHUB_REPO</code>: 存储网页的仓库名</li>
<li><code>GITHUB_PATH</code>: 网页保存的目录 (可以为空)</li>
</ul>
</div>
</div>
</div>
<!-- 验证清单 -->
<div class="card mb-4">
<div class="card-header">
<div class="d-flex align-items-center">
<div class="step-number me-3">5</div>
<h3 class="mb-0">验证配置</h3>
</div>
</div>
<div class="card-body">
<h5>✅ 配置检查清单</h5>
<div id="checklist">
<div class="checklist-item">
<input type="checkbox" class="form-check-input me-2" id="check1">
<label for="check1">Token 已创建且有 <code>repo</code> 权限</label>
</div>
<div class="checklist-item">
<input type="checkbox" class="form-check-input me-2" id="check2">
<label for="check2">环境变量已在 Hugging Face Space 中配置</label>
</div>
<div class="checklist-item">
<input type="checkbox" class="form-check-input me-2" id="check3">
<label for="check3">GitHub 仓库已创建且可访问</label>
</div>
<div class="checklist-item">
<input type="checkbox" class="form-check-input me-2" id="check4">
<label for="check4">分支名称正确 (通常是 main 或 master)</label>
</div>
<div class="checklist-item">
<input type="checkbox" class="form-check-input me-2" id="check5">
<label for="check5">已通过测试页面验证</label>
</div>
</div>
<div class="mt-4">
<a href="github-test.php" class="btn btn-success me-2">🧪 测试配置</a>
<a href="config.php" class="btn btn-secondary me-2">⚙️ 查看状态</a>
<a href="editor.html" class="btn btn-primary">🎨 开始使用编辑器</a>
</div>
</div>
</div>
<!-- 故障排除 -->
<div class="card">
<div class="card-header">
<h3>🔧 常见问题和解决方案</h3>
</div>
<div class="card-body">
<div class="accordion" id="troubleshootingAccordion">
<!-- 问题1 -->
<div class="accordion-item">
<h5 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#trouble1">
403 Forbidden - 权限不足
</button>
</h5>
<div id="trouble1" class="accordion-collapse collapse" data-bs-parent="#troubleshootingAccordion">
<div class="accordion-body">
<strong>原因:</strong> Token 权限不足<br>
<strong>解决:</strong>
<ol>
<li>确保勾选了 <code>repo</code> 权限</li>
<li>重新生成 Token 并更新环境变量</li>
<li>检查仓库是否为私有仓库(需要完整 repo 权限)</li>
</ol>
</div>
</div>
</div>
<!-- 问题2 -->
<div class="accordion-item">
<h5 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#trouble2">
401 Unauthorized - 认证失败
</button>
</h5>
<div id="trouble2" class="accordion-collapse collapse" data-bs-parent="#troubleshootingAccordion">
<div class="accordion-body">
<strong>原因:</strong> Token 无效或过期<br>
<strong>解决:</strong>
<ol>
<li>检查 Token 是否正确复制(40个字符,以 ghp_ 开头)</li>
<li>检查 Token 是否过期</li>
<li>重新生成新的 Token</li>
</ol>
</div>
</div>
</div>
<!-- 问题3 -->
<div class="accordion-item">
<h5 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#trouble3">
404 Not Found - 仓库不存在
</button>
</h5>
<div id="trouble3" class="accordion-collapse collapse" data-bs-parent="#troubleshootingAccordion">
<div class="accordion-body">
<strong>原因:</strong> 仓库不存在或 Token 无访问权限<br>
<strong>解决:</strong>
<ol>
<li>检查 <code>GITHUB_OWNER</code> 是否是正确的用户名</li>
<li>检查 <code>GITHUB_REPO</code> 是否是正确的仓库名</li>
<li>确保仓库存在且 Token 有访问权限</li>
<li>如果是组织仓库,确保 Token 有组织权限</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
// 保存检查状态
document.addEventListener('DOMContentLoaded', function() {
const checkboxes = document.querySelectorAll('#checklist input[type="checkbox"]');
checkboxes.forEach(checkbox => {
checkbox.addEventListener('change', function() {
localStorage.setItem(this.id, this.checked);
});
// 恢复状态
const saved = localStorage.getItem(checkbox.id);
if (saved === 'true') {
checkbox.checked = true;
}
});
});
</script>
</body>
</html>