48 lines
1.3 KiB
JavaScript
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 };
|