🔐
Google OAuth 2.0 발급 가이드
난이도⭐⭐⭐☆☆
💡 Google OAuth 2.0이란?
사용자 본인 Google 계정으로 Calendar / Drive / Sheets / YouTube 등 접근 권한을 받는 표준 인증 흐름. 일정 자동 관리 / 파일 자동 백업 / 이메일 발송 등 다양한 사용 사례에 활용.
- ✅ 사용자가 직접 권한 동의 (보안 ↑)
- ✅ Refresh Token으로 영구 접근 가능 (재로그인 X)
- ⚠️ OAuth Consent Screen 설정 필요 (15분 ~ 1일 소요)
- ⚠️ Test mode = 본인만 / Production mode = 모든 사용자 (Google 검수 필요)
Google Cloud Console 프로젝트 생성
console.cloud.google.com 접속 → 상단 프로젝트 선택 → "새 프로젝트".
프로젝트 이름 입력 (예: MyApp) → 생성.
API 활성화
좌측 메뉴 "API 및 서비스" → "라이브러리".
사용할 API 검색 + 활성화:
- Google Calendar API — 일정 관리
- Google Drive API — 파일 백업
- Google Sheets API — 스프레드시트
- Gmail API — 이메일 (앱 비밀번호 대안)
OAuth Consent Screen 설정
"API 및 서비스" → "OAuth 동의 화면".
설정:
- User type: "External" (모든 Google 계정 / 단 Test mode 시작)
- 앱 이름 / 사용자 지원 이메일 / 개발자 연락처
- Scopes: 사용할 권한 추가 (Calendar / Drive 등)
- Test users: 본인 이메일 추가 (개발 / 테스트용)
OAuth Client ID 발급
"API 및 서비스" → "사용자 인증 정보" → "+ 사용자 인증 정보 만들기" → "OAuth 클라이언트 ID".
설정:
- Application type: Web application
- 이름:
MyApp Production - Authorized redirect URIs: 본인 앱 OAuth callback URL (예:
https://myapp.com/api/auth/google/callback)
생성 → Client ID + Client Secret 발급.
Refresh Token 발급 (사용자 동의 흐름)
사용자가 본인 앱 로그인 → Google 동의 화면 → 권한 승인 → callback URL로 redirect → Authorization Code 받음.
Authorization Code를 Refresh Token으로 교환 (한 번만):
POST https://oauth2.googleapis.com/token
{
"code": "AUTHORIZATION_CODE",
"client_id": "...",
"client_secret": "...",
"redirect_uri": "https://myapp.com/api/auth/google/callback",
"grant_type": "authorization_code"
}응답에 refresh_token 포함 → DB에 사용자별 저장.
Foundry 환경변수 입력
포비한테 직접 입력:
GOOGLE_OAUTH_CLIENT_ID=...apps.googleusercontent.comGOOGLE_OAUTH_CLIENT_SECRET=GOCSPX-...GOOGLE_OAUTH_REDIRECT_URI=https://myapp.com/api/auth/google/callback
Refresh Token은 사용자별 DB 저장 (환경변수 X) — 코드에서 자동 처리.
❓ 자주 묻는 질문
Test mode vs Production mode 차이?
Test = 본인 + 추가 test user 최대 100명 / 빠른 시작. Production = 모든 Google 사용자 가능 / Google 검수 (Scope에 따라 1주~6주). 개인 / 사이드 프로젝트는 Test mode 유지 OK.
Refresh Token이 무효화돼요
가능 원인: (1) 6개월 미사용 / (2) 사용자가 Google 계정에서 권한 취소 / (3) 비밀번호 변경 / (4) Test mode 만료 (7일). 코드에서 401 응답 받으면 → 재로그인 흐름 안내.
여러 API 동시 사용?
가능! 한 OAuth Client ID로 여러 Scope (Calendar + Drive + Sheets 등) 동시 요청 가능. Scope 늘리면 사용자 동의 화면에 모두 표시.
검수 (Verification) 필요한가요?
Sensitive scope (Gmail readonly / Drive readonly 등) 사용 시 Google 검수 필수. Non-sensitive scope (Calendar 등)는 검수 X.