const { google } = require('googleapis');
const axios = require('axios');
const fs = require('fs');
// 1. 구글 인증 설정
const auth = new google.auth.GoogleAuth({
keyFile: 'your-service-account-key.json', // 다운로드한 JSON 키
scopes: ['https://www.googleapis.com/auth/drive.file'],
});
const drive = google.drive({ version: 'v3', auth });
// 2. 아임웹 Webhook 수신 함수 (Express 예시)
app.post('/imweb-webhook', async (req, res) => {
const fileUrl = req.body.file_url; // 아임웹이 보내주는 파일 경로
const fileName = req.body.file_name;
try {
// 파일 스트림 가져오기
const response = await axios({
method: 'GET',
url: fileUrl,
responseType: 'stream',
});
// 3. 구글 드라이브로 업로드
const fileMetadata = {
name: fileName,
parents: ['YOUR_FOLDER_ID'], // 업로드될 폴더 ID
};
const media = {
mimeType: response.headers['content-type'],
body: response.data,
};
const file = await drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id',
});
console.log('파일 업로드 성공 ID:', file.data.id);
res.status(200).send('OK');
} catch (error) {
console.error('에러 발생:', error);
res.status(500).send('Error');
}
});