antigravity2api2 / scripts /refresh-tokens.js
lin7zhi's picture
Upload folder using huggingface_hub
97ec0e5 verified
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import log from '../src/utils/logger.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const ACCOUNTS_FILE = path.join(__dirname, '..', 'data', 'accounts.json');
const CLIENT_ID = '1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com';
const CLIENT_SECRET = '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';
async function refreshToken(refreshToken) {
const body = new URLSearchParams({
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
grant_type: 'refresh_token',
refresh_token: refreshToken
});
const response = await fetch('https://oauth2.googleapis.com/token', {
method: 'POST',
headers: {
'Host': 'oauth2.googleapis.com',
'User-Agent': 'Go-http-client/1.1',
'Content-Length': body.toString().length.toString(),
'Content-Type': 'application/x-www-form-urlencoded',
'Accept-Encoding': 'gzip'
},
body: body.toString()
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
return await response.json();
}
async function refreshAllTokens() {
if (!fs.existsSync(ACCOUNTS_FILE)) {
log.error(`文件不存在: ${ACCOUNTS_FILE}`);
process.exit(1);
}
const accounts = JSON.parse(fs.readFileSync(ACCOUNTS_FILE, 'utf-8'));
log.info(`找到 ${accounts.length} 个账号`);
let successCount = 0;
let failCount = 0;
for (let i = 0; i < accounts.length; i++) {
const account = accounts[i];
if (account.enable === false) {
log.warn(`账号 ${i + 1}: 已禁用,跳过`);
continue;
}
try {
log.info(`刷新账号 ${i + 1}...`);
const tokenData = await refreshToken(account.refresh_token);
account.access_token = tokenData.access_token;
account.expires_in = tokenData.expires_in;
account.timestamp = Date.now();
successCount++;
log.info(`账号 ${i + 1}: 刷新成功`);
} catch (error) {
failCount++;
log.error(`账号 ${i + 1}: 刷新失败 - ${error.message}`);
if (error.message.includes('invalid_grant') || error.message.includes('400')) {
account.enable = false;
log.warn(`账号 ${i + 1}: Token 已失效或错误,已自动禁用该账号`);
}
}
}
fs.writeFileSync(ACCOUNTS_FILE, JSON.stringify(accounts, null, 2));
log.info(`刷新完成: 成功 ${successCount} 个, 失败 ${failCount} 个`);
}
refreshAllTokens().catch(err => {
log.error('刷新失败:', err.message);
process.exit(1);
});