🔐

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.com
  • GOOGLE_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.

🔗 참고 링크