用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/QianJinGuo/wiki --skill rclone-gdrive-auth-via-proxy命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | rclone-gdrive-auth-via-proxy |
| description | 在代理环境下通过 browser OAuth 完成 rclone Google Drive 授权 |
| triggers | ["rclone authorize drive 超时失败","Google OAuth i/o timeout","rclone sync 挂起无输出(token 过期/损坏)","rclone 命令 hang 住不返回"] |
在网络无法直连 Google OAuth 服务器的环境下,通过本地代理完成 rclone 的 browser OAuth 授权。
本地有代理工具运行(v2rayN、Clash 等),端口已知。
# 检查 v2rayN/xray 是否运行,以及它监听的 socks 端口
ps aux | grep -E 'v2ray|xray|clash' | grep -v grep
# 扫描常见代理端口
for port in 10808 10809 10810 7890 7891 8080 8118; do
nc -z -w1 127.0.0.1 $port 2>/dev/null && echo "OPEN: $port"
done
export HTTPS_PROXY=http://127.0.0.1:10808
export HTTP_PROXY=http://127.0.0.1:10808
curl -s --max-time 5 https://www.google.com | head -1 && echo "PROXY OK"
必须先杀掉旧的后台进程,否则多进程抢 port 会导致 token 写入混乱:
# 杀掉所有残留的 rclone authorize 进程
pkill -f "rclone authorize" 2>/dev/null
sleep 1
# 设置代理并后台运行
export HTTPS_PROXY=http://127.0.0.1:10808
export HTTP_PROXY=http://127.0.0.1:10808
/Users/jinguo/bin/rclone authorize drive 2>&1 &
echo "PID: $!"
命令行会输出本地监听地址,如:
http://127.0.0.1:53682/auth?state=xxx
手动在本机浏览器打开这个地址,用 Google 账号授权。授权成功后页面会显示 success。
授权后命令行输出包含完整 JSON token(有效期 1 小时,refresh_token 永久有效):
{"access_token":"ya29...","token_type":"Bearer","refresh_token":"1//0eH...","expiry":"...","expires_in":3599}
手动写入 ~/.config/rclone/rclone.conf:
[gdrive-wiki]
type = drive
scope = drive
token = {"access_token":"ya29...","token_type":"Bearer","refresh_token":"1//0eH...","expiry":"...","expires_in":3599}
/Users/jinguo/bin/rclone lsd gdrive-wiki:
dial tcp [2607:f8b0:400e:c1b::5f]:443: i/o timeoutHTTPS_PROXY/HTTP_PROXY 后 rclone 自动走 IPv4 代理refresh_token 是永久有效的,不需要重新授权rclone 命令 hang 住不返回,且无错误输出,通常是以下原因:
检查 ~/.config/rclone/rclone.conf 中 expiry 字段。如果已过期,rclone 无法刷新 token 会 hang 住。
token 字段包含 ... 等占位符(如 "ya29.a...0207"),说明之前复制时被截断。
rclone 解析 base64 失败会报 illegal base64 data,但有时也会 hang。
修复步骤:
# 先清空 token 字段,只保留 type 和 scope
cat > ~/.config/rclone/rclone.conf << 'EOF'
[gdrive-wiki]
type = drive
scope = drive
EOF
# 然后重新走授权流程
rclone 默认配置在 ~/.config/rclone/rclone.conf(不是 ~/.rclone.conf)。
如果找不到配置,用 find ~ -name "rclone.conf" 2>/dev/null 搜索。
# 确认 rclone 进程还在跑
ps aux | grep rclone | grep -v grep
# 检查日志
tail -20 ~/wiki/rclone-sync.log
# 测试连通性(需代理)
export HTTPS_PROXY=http://127.0.0.1:10808
curl -s --max-time 5 https://www.googleapis.com/oauth2/v1/certs | head -1
关键限制: rclone authorize drive 需要浏览器交互(打开本地监听地址并登录 Google 账号),在 headless cron 环境中无法完成。cron 任务中 rclone token 过期后只能报错,不能自动修复。
推荐方案:使用 Google Service Account 替代 OAuth token
Service Account 使用 JSON key 文件认证,无需浏览器交互,适合 cron 自动化:
~/.config/rclone/service-account.json(权限 600)[gdrive-wiki]
type = drive
scope = drive
service_account_file = /Users/jinguo/.config/rclone/service-account.json
诊断 token 是否过期:
# 检查 config 中是否有 token 字段
grep -A5 "\[gdrive-wiki\]" ~/.config/rclone/rclone.conf
# 如果只有 type/scope 没有 token 字段,说明 token 已完全丢失
# 如果有 token 但 expiry 已过期,rclone sync 会 hang 或报 "empty token found"