#!/bin/bash # GitHub Token 权限快速检查脚本 # 使用方法: ./check-github-token.sh YOUR_TOKEN YOUR_OWNER YOUR_REPO TOKEN=$1 OWNER=$2 REPO=$3 if [ -z "$TOKEN" ] || [ -z "$OWNER" ] || [ -z "$REPO" ]; then echo "❌ 用法: $0 " echo "例如: $0 ghp_xxxxxxxxxxxx myusername myrepo" exit 1 fi echo "🔍 检查 GitHub Token 权限..." echo "Token: ${TOKEN:0:8}..." echo "仓库: $OWNER/$REPO" echo "=" * 50 # 1. 检查 Token 基本权限 echo "📋 1. 检查 Token 基本权限..." USER_RESPONSE=$(curl -s -H "Authorization: token $TOKEN" \ -H "User-Agent: VvvebJs-Check/1.0" \ https://api.github.com/user) if echo "$USER_RESPONSE" | grep -q '"login"'; then USERNAME=$(echo "$USER_RESPONSE" | grep '"login"' | sed 's/.*"login": *"\([^"]*\)".*/\1/') echo "✅ Token 有效 - 用户: $USERNAME" else echo "❌ Token 无效或无权限" echo "详情: $USER_RESPONSE" exit 1 fi # 2. 检查仓库访问权限 echo "📁 2. 检查仓库访问权限..." REPO_RESPONSE=$(curl -s -H "Authorization: token $TOKEN" \ -H "User-Agent: VvvebJs-Check/1.0" \ https://api.github.com/repos/$OWNER/$REPO) if echo "$REPO_RESPONSE" | grep -q '"full_name"'; then echo "✅ 仓库可访问" # 检查权限详情 if echo "$REPO_RESPONSE" | grep -q '"permissions"'; then ADMIN=$(echo "$REPO_RESPONSE" | grep '"admin"' | sed 's/.*"admin": *\([^,]*\).*/\1/') PUSH=$(echo "$REPO_RESPONSE" | grep '"push"' | sed 's/.*"push": *\([^,]*\).*/\1/') PULL=$(echo "$REPO_RESPONSE" | grep '"pull"' | sed 's/.*"pull": *\([^,]*\).*/\1/') echo " - Admin: $ADMIN" echo " - Push: $PUSH" echo " - Pull: $PULL" if [ "$PUSH" = "true" ]; then echo "✅ 有写入权限" else echo "❌ 缺少写入权限" fi fi else echo "❌ 仓库不存在或无访问权限" echo "详情: $REPO_RESPONSE" exit 1 fi # 3. 测试文件创建 echo "✏️ 3. 测试文件创建权限..." TEST_FILE="vvvebjs-test-$(date +%s).txt" TEST_CONTENT=$(echo "VvvebJs Test - $(date)" | base64) CREATE_RESPONSE=$(curl -s -X PUT \ -H "Authorization: token $TOKEN" \ -H "User-Agent: VvvebJs-Check/1.0" \ -H "Content-Type: application/json" \ -d "{\"message\":\"VvvebJs permission test\",\"content\":\"$TEST_CONTENT\"}" \ https://api.github.com/repos/$OWNER/$REPO/contents/$TEST_FILE) if echo "$CREATE_RESPONSE" | grep -q '"sha"'; then echo "✅ 文件创建成功" # 清理测试文件 SHA=$(echo "$CREATE_RESPONSE" | grep '"sha"' | head -1 | sed 's/.*"sha": *"\([^"]*\)".*/\1/') curl -s -X DELETE \ -H "Authorization: token $TOKEN" \ -H "User-Agent: VvvebJs-Check/1.0" \ -H "Content-Type: application/json" \ -d "{\"message\":\"Clean up test file\",\"sha\":\"$SHA\"}" \ https://api.github.com/repos/$OWNER/$REPO/contents/$TEST_FILE > /dev/null echo "🧹 测试文件已清理" else echo "❌ 文件创建失败" echo "详情: $CREATE_RESPONSE" fi echo "" echo "🎉 权限检查完成!" echo "" echo "📋 配置建议:" echo "GITHUB_TOKEN=$TOKEN" echo "GITHUB_OWNER=$OWNER" echo "GITHUB_REPO=$REPO" echo "GITHUB_BRANCH=main" echo "GITHUB_PATH=pages/" echo "STORAGE_TYPE=github"