Google Drive는 구글이 제공하는 클라우드 스토리지 서비스로, 파일 저장, 공유, 동기화 등의 기능을 제공합니다. 다양한 애플리케이션에서 Google Drive API를 활용하여 연계하면 클라우드 기반 데이터 관리 및 작업 자동화가 가능합니다. 이 글에서는 Google Drive API를 사용하여 파일 업로드, 다운로드, 관리 등을 구현하는 방법을 자세히 설명합니다.
1. Google Drive 연계의 필요성
Google Drive와의 연계는 다음과 같은 장점이 있습니다.
- 데이터의 클라우드 관리:
- 중요한 데이터를 클라우드에 안전하게 저장하고 여러 장치에서 접근 가능.
- 실시간 협업 가능:
- 문서, 파일을 공유하고 여러 사용자가 동시에 작업 가능.
- 자동화:
- API를 통해 파일 업로드, 정리, 다운로드 등의 작업을 자동화.
- 플랫폼 독립성:
- Google Drive는 Windows, Mac, iOS, Android 등 다양한 환경에서 지원.
2. Google Drive API 연계 개요
Google Drive와 연계하려면 Google Drive API와 OAuth 2.0 인증을 사용해야 합니다. 주요 작업 단계는 다음과 같습니다.
- Google Cloud Platform에서 API 사용 설정.
- OAuth 2.0 인증을 통한 액세스 권한 요청.
- Google Drive API를 호출하여 파일 및 폴더 관리.
3. Google Drive API 설정
3.1 Google Cloud Console에서 API 설정
1) 프로젝트 생성
- Google Cloud Console에 로그인합니다.
- 프로젝트 만들기를 선택하고 프로젝트 이름을 입력합니다.
2) API 사용 설정
- API 및 서비스 > 라이브러리로 이동.
- Google Drive API를 검색하고 활성화합니다.
3) OAuth 동의 화면 구성
- API 및 서비스 > OAuth 동의 화면으로 이동.
- 사용자 유형을 선택합니다. (일반적으로 내부 또는 외부)
- 앱 이름, 이메일, 권한 등을 설정합니다.
4) OAuth 클라이언트 ID 생성
- API 및 서비스 > 인증 정보 > + 인증 정보 만들기를 선택.
- OAuth 클라이언트 ID를 선택.
- 애플리케이션 유형을 설정합니다. (예: 데스크톱 앱, 웹 애플리케이션 등)
- 생성 후 클라이언트 ID와 클라이언트 비밀을 저장합니다.
3.2 권한 설정
Google Drive API를 사용하려면 적절한 OAuth 2.0 범위를 설정해야 합니다.
- 기본 범위(Scope):
https://www.googleapis.com/auth/drive
: 전체 드라이브 액세스.https://www.googleapis.com/auth/drive.file
: 사용자 생성/열람 파일에 대한 액세스.https://www.googleapis.com/auth/drive.readonly
: 읽기 전용 액세스.
4. OAuth 2.0 인증 구현
Google Drive와 연동하려면 OAuth 2.0 인증을 통해 사용자의 액세스 토큰을 받아야 합니다.
4.1 사용자 인증 요청
다음 URL을 사용하여 인증 요청을 보냅니다.
https://accounts.google.com/o/oauth2/auth?
client_id={클라이언트_ID}&
redirect_uri={리디렉션_URI}&
response_type=code&
scope=https://www.googleapis.com/auth/drive
- client_id: Google Cloud에서 생성한 클라이언트 ID.
- redirect_uri: 애플리케이션에서 설정한 리디렉션 URI.
- scope: API 요청 범위.
4.2 인증 코드 교환
인증 코드(code
)를 받은 후 액세스 토큰으로 교환합니다.
POST 요청:
POST https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded
client_id={클라이언트_ID}
&client_secret={클라이언트_비밀}
&grant_type=authorization_code
&code={인증_코드}
&redirect_uri={리디렉션_URI}
응답 예시:
{
"access_token": "{액세스_토큰}",
"expires_in": 3600,
"refresh_token": "{리프레시_토큰}",
"scope": "https://www.googleapis.com/auth/drive",
"token_type": "Bearer"
}
5. Google Drive API 사용법
5.1 파일 업로드
1) 업로드 요청
POST 요청:
POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
Authorization: Bearer {액세스_토큰}
Content-Type: multipart/related; boundary=boundary_string
--boundary_string
Content-Type: application/json; charset=UTF-8
{
"name": "example.txt",
"mimeType": "text/plain"
}
--boundary_string
Content-Type: text/plain
파일 내용 예시
--boundary_string--
응답 예시:
{
"id": "1A2B3C",
"name": "example.txt",
"mimeType": "text/plain"
}
2) 대용량 파일 업로드
대용량 파일은 resumable upload 방식을 사용합니다. 파일의 일부를 전송하며 업로드를 완료할 수 있습니다.
5.2 파일 다운로드
GET 요청:
GET https://www.googleapis.com/drive/v3/files/{file_id}?alt=media
Authorization: Bearer {액세스_토큰}
5.3 파일 리스트 조회
GET 요청:
GET https://www.googleapis.com/drive/v3/files
Authorization: Bearer {액세스_토큰}
응답 예시:
{
"files": [
{
"id": "1A2B3C",
"name": "example.txt"
},
{
"id": "4D5E6F",
"name": "document.pdf"
}
]
}
5.4 폴더 생성
POST 요청:
POST https://www.googleapis.com/drive/v3/files
Authorization: Bearer {액세스_토큰}
Content-Type: application/json
{
"name": "NewFolder",
"mimeType": "application/vnd.google-apps.folder"
}
응답 예시:
{
"id": "7G8H9I",
"name": "NewFolder",
"mimeType": "application/vnd.google-apps.folder"
}
5.5 파일 삭제
DELETE 요청:
DELETE https://www.googleapis.com/drive/v3/files/{file_id}
Authorization: Bearer {액세스_토큰}
6. 코드 예제: Java로 구현
Maven 종속성 추가
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.32.1</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.32.1</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-drive</artifactId>
<version>v3-rev20220703-1.32.1</version>
</dependency>
코드 예제
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.auth.oauth2.UserCredentials;
import java.io.FileInputStream;
import java.util.Collections;
public class GoogleDriveExample {
public static void main(String[] args) throws Exception {
// OAuth 인증
GoogleCredentials credentials = UserCredentials.fromStream(new FileInputStream("credentials.json"))
.createScoped(Collections.singleton(DriveScopes.DRIVE));
// Drive 서비스 객체 생성
Drive driveService = new Drive.Builder(
new com.google.api.client.http.javanet.NetHttpTransport(),
new com.google.api.client.json.JsonFactory(),
credentials
).setApplicationName("My App").build();
// 파일 업로드
File fileMetadata = new File();
fileMetadata.setName("example.txt");
File file = driveService.files().create(fileMetadata).execute();
System.out.println("Uploaded File ID: " + file.getId());
}
}
7. 결론
Google Drive API는 강력하고 유연한 클라우드 연동 기능을 제공합니다. OAuth 2.0 인증을 통해 안전한 액세스가 가능하며, 파일 업로드, 다운로드, 공유 등 다양한 작업을 자동화할 수 있습니다. 위 내용을 기반으로 여러분의 애플리케이션에서 Google Drive와의 연계를 구현해 보세요!
'개발 > 기타' 카테고리의 다른 글
OneDrive와 연계하는 방법: 상세 가이드 (0) | 2025.01.18 |
---|---|
Java 비즈니스 아키텍처의 파일명 및 변수명 명명 규칙: 효율적이고 유지보수 가능한 코드를 위한 가이드 (0) | 2025.01.16 |
Spring 태그 라이브러리(Spring Tag Library)란? (0) | 2025.01.15 |
EL(Expression Language) 태그의 종류와 사용법 (0) | 2025.01.15 |
JSTL 태그의 종류와 사용법 (1) | 2025.01.15 |