티스토리 뷰
구글드라이브, 대용량 저장을 위해 꼭 알아야할 서비스 계정과 현재 방식의 차이점
Coding Life 2024. 11. 16. 12:591. 현재 방식 (OAuth2 사용자 인증):
특정 Google 계정과 직접 연동됩니다.
Refresh Token을 사용해 만료된 Access Token을 갱신해야 합니다.
일반 사용자가 인증을 통해 Google Drive에 접근하는 구조입니다.
클라이언트 계정을 사용하기 때문에 인증 URL로 리디렉션 및 인증 과정이 필요합니다.
2. 서비스 계정:
특정 사용자가 아닌 서버에서 Google Drive를 관리하는 데 적합합니다.
인증 과정이 필요 없으며, JSON 키 파일로 인증이 자동으로 이루어집니다.
서버 전용 Google Drive 공간을 사용하는 구조입니다.
**공유 드라이브(Shared Drive)**와 연동하거나 파일/폴더에 대해 접근 권한을 명시적으로 추가해야 할 수도 있습니다.
이 부분을 잘 몰라서 많은 시간을 허비했습니다.
코드를 분석한 결과, 작성하신 코드 대부분이 Google Drive API를 사용하여 파일 업로드, 다운로드, 썸네일 표시, 삭제 등의 기능을 잘 처리하고 있습니다. 서비스 계정을 활용하지 않고 클라이언트 계정을 사용하는 현재 구조에서는 다음 사항을 보완하면 더 안정적이고 실용적으로 개선할 수 있습니다.
개선 및 확인 사항
refresh_token 갱신 및 자동화
isAccessTokenExpired에서 토큰 만료 시 오류가 반복 발생할 수 있습니다.
Refresh Token이 유효하지 않거나 만료될 가능성을 대비해, 특정 조건에서 인증 URL로 리다이렉트하지 않고 사용자 경험을 유지할 수 있도록 합니다.
서비스 계정을 도입하면 이 문제를 해결할 수 있습니다.
대안: 서비스 계정을 도입해 refresh_token 문제를 근본적으로 제거하거나, 현재 방식 유지 시 unlink 처리를 최종적으로만 실행.
썸네일 URL 처리
현재 썸네일 URL을 생성하는 방식은 적합하며, 썸네일이 제공되지 않을 경우 기본 파일 URL을 사용하는 논리가 잘 구성되어 있습니다.
삭제 로직
파일 삭제 시 파일 ID만 전달하도록 구현되어 있으며, delPicFn 함수에서도 해당 ID를 추출해 사용하는 방식이 적절합니다.
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
// 서비스 계정 JSON 키 파일 경로
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json');
// Google 클라이언트 설정
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Drive::DRIVE);
$service = new Google_Service_Drive($client);
// Google Drive에서 파일 목록 가져오기
$folderId = 'YOUR_FOLDER_ID'; // 대상 Google Drive 폴더 ID
$query = "'$folderId' in parents and trashed=false";
$results = $service->files->listFiles([
'q' => $query,
'fields' => 'files(id, name, thumbnailLink)'
]);
if (count($results->getFiles()) == 0) {
echo "파일이 없습니다.";
} else {
foreach ($results->getFiles() as $file) {
echo "파일 이름: " . $file->getName() . "<br>";
echo "썸네일: " . $file->getThumbnailLink() . "<br>";
}
}
썸네일 이미지가 너무 작거나 비율이 이상해질 경우를 대비하여 CSS에 object-fit: cover; 속성을 추가해 이미지를 깔끔하게 보이도록 조정.
전환이 필요한 경우
인증 과정이 사용자에게 불편하다면 서비스 계정으로 전환이 적합합니다.
대규모 파일 관리나 다수 사용자 사이트에 파일 업로드/다운로드 기능을 제공하려는 경우에도 서비스 계정이 유리합니다.
현재 코드는 사용자 인증 기반이므로 인증 URL 리디렉션이 불가피합니다. 서비스 계정으로 전환하면 인증 과정 없이 보다 안정적으로 Google Drive를 사용할 수 있습니다. 필요한 경우 서비스 계정으로 변경하는 작업도 도와드릴 수 있습니다! 😊
서비스 계정을 사용하는 것은 OAuth2.0 사용자 인증 방식과 목적이 다릅니다. 이를 이해하려면 두 방식의 주요 차이점과 서비스 계정의 고유한 특징을 명확히 파악해야 합니다.
1. OAuth2.0 사용자 인증 방식
주요 특징:
사용자가 직접 인증을 수행해야 합니다.
사용자의 Google Drive에 접근하기 위해 권한 승인이 필요합니다.
사용자의 이메일과 비밀번호를 직접 사용하지 않고, Google 계정으로 토큰을 발급받습니다.
사용자의 Google Drive 내 폴더와 파일에 접근할 수 있습니다.
장점:
개인 계정에 접근이 용이하며, 사용자가 인증을 완료하면 모든 작업이 간단히 이루어집니다.
파일 업로드와 관련된 복잡한 설정이 거의 필요하지 않습니다.
단점:
사용자가 직접 인증해야 하므로 비즈니스 환경에서는 자동화가 어렵습니다.
특정 계정에서만 파일 관리를 수행해야 할 경우 불편합니다.
2. 서비스 계정 방식
주요 특징:
Google Workspace(이전의 G Suite) 환경에서 조직 내 리소스에 접근하거나 관리 작업을 자동화하는 데 주로 사용됩니다.
Google이 제공하는 독립적인 "봇 계정"입니다.
사용자와 별도로 동작하며, 특정 Google Drive 폴더에 접근할 권한을 수동으로 부여해야 합니다.
장점:
자동화가 가능하며, 사용자가 개입할 필요가 없습니다.
조직이나 프로젝트별로 접근 권한을 중앙화하여 관리할 수 있습니다.
단점:
서비스 계정이 Google Drive에 접근하려면 권한을 명시적으로 설정해야 합니다.
기본적으로 서비스 계정은 Google Drive를 사용할 수 없으며, 수동으로 폴더 공유를 통해 권한을 부여해야 합니다.
인증 설정이 OAuth2.0보다 복잡할 수 있습니다.
'IT tech Coding > GoogleDrive' 카테고리의 다른 글
Google Cloud Console에서 리디렉션 URI 설정 (0) | 2024.11.14 |
---|---|
내PC에 구글드라이브 API 설치하고, 웹서버에 전송하기 (0) | 2024.11.12 |
- Total
- Today
- Yesterday
- json파일편하게보는법
- 오블완
- #프로그램설치
- General error: 2031
- 뫄프로그래밍
- 도면자동생성
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- Bootstrap 5
- 캐드자동작도
- 엑셀입력보호
- #파이썬패키징
- json파일형태보기
- 엑셀셀보호
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 효율적코딩방법
- 프로그래머생활
- 파이썬코드줄바꿈방법
- 스크립트작성기초
- chatGPT3.5파이썬버전
- 오토핫키가이드
- #InstallForge
- 코딩튜토리얼
- 코딩효율성
- 티스토리챌린지
- 엑셀보호
- 테크에능한여성
- isset을 적용해야 하는 이유
- ajax오류메시지
- 구글드라이브API
- sql문장 날짜계산
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |