guanghulab/scripts/grid-db/drive-auth.js
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

48 lines
1.3 KiB
JavaScript

/**
* scripts/grid-db/drive-auth.js
*
* OAuth2 认证模块 · 替代原 Service Account 模式
*
* 环境变量:
* GDRIVE_CLIENT_ID — OAuth 客户端 ID
* GDRIVE_CLIENT_SECRET — OAuth 客户端密钥
* GDRIVE_REFRESH_TOKEN — 长效刷新令牌
*
* 返回已认证的 google.drive 客户端实例
*
* 守护: PER-ZY001 铸渊
* 系统: SYS-GLW-0001
* 主控: TCS-0002∞ 冰朔
*/
const { google } = require('googleapis');
function getOAuth2Client() {
const clientId = process.env.GDRIVE_CLIENT_ID;
const clientSecret = process.env.GDRIVE_CLIENT_SECRET;
const refreshToken = process.env.GDRIVE_REFRESH_TOKEN;
if (!clientId || !clientSecret || !refreshToken) {
const missing = [];
if (!clientId) missing.push('GDRIVE_CLIENT_ID');
if (!clientSecret) missing.push('GDRIVE_CLIENT_SECRET');
if (!refreshToken) missing.push('GDRIVE_REFRESH_TOKEN');
throw new Error(`Missing OAuth2 environment variables: ${missing.join(', ')}`);
}
const oauth2Client = new google.auth.OAuth2(clientId, clientSecret);
oauth2Client.setCredentials({
refresh_token: refreshToken
});
return oauth2Client;
}
function getDriveClient() {
const auth = getOAuth2Client();
return google.drive({ version: 'v3', auth });
}
module.exports = { getDriveClient, getOAuth2Client };