구글 OAuth 2.0 액세스 토큰 발급 완벽 가이드: 삽질 방지 5단계 🚀

구글 OAuth 2.0 액세스 토큰 발급 개념을 형상화한 디지털 아트

안녕하세요! 오늘도 코딩의 늪에서 허우적대고 계실 여러분을 위해, '구글 API 연동'의 첫 관문이자 가장 큰 고비인 OAuth 2.0 토큰 발급법을 들고 왔습니다. 솔직히 말씀드릴게요. 저도 처음엔 '아니, 그냥 아이디 비밀번호로 로그인하면 안 돼?'라고 생각했답니다. 하지만 보안의 세계는 냉정하죠! 오늘 저와 함께 차근차근 따라오시면, 복잡해 보이던 구글 클라우드 플랫폼(GCP)도 아주 귀여운 강아지처럼 다루실 수 있을 거예요. 자, 준비되셨나요?

📌 에디터의 3줄 요약
  • 구글 클라우드 플랫폼(GCP)에서 프로젝트 생성과 OAuth 동의 화면 설정은 필수!
  • 인증 코드(Code)를 먼저 얻고, 이를 통해 액세스 토큰(Access Token)을 교환하는 2단계 방식입니다.
  • 리프레시 토큰(Refresh Token)을 받고 싶다면 'prompt=consent' 파라미터를 꼭 기억하세요.

1. 구글 클라우드 플랫폼(GCP) 세팅하기

가장 먼저 우리들의 놀이터, GCP 콘솔에 접속해야 합니다. 로그인하신 후 왼쪽 상단 프로젝트 선택창에서 '새 프로젝트'를 만들어주세요. 프로젝트 이름은 여러분이 알아보기 쉬운 것으로 정하면 됩니다. (예: My-Awesome-Calendar-App)

OAuth 동의 화면 구성 (가장 중요!)

1. 'API 및 서비스 > OAuth 동의 화면'으로 들어가세요. 
구글 OAuth 2.0 액세스 토큰 발급 완벽 가이드: 삽질 방지 5단계 🚀
구글 OAuth 2.0 액세스 토큰 발급 완벽 가이드: 삽질 방지 5단계 🚀

2. OAuth 클라이언트 ID 만들기
OAuth 클라이언트 ID 만들기
3. 프로젝트 구성
여기서 User Type을 '외부'로 선택하고 만들기를 누릅니다. 필수 정보(앱 이름, 이메일 등)를 입력하고 넘어가다 보면 '테스트 사용자'를 등록하는 화면이 나옵니다. 여기에 본인의 이메일을 꼭 넣으세요! 이거 안 넣으면 나중에 로그인할 때 '권한 없음' 에러 보고 눈물 흘리실지도 몰라요.
OAuth 클라이언트 ID 만들기
OAuth 클라이언트 ID 만들기 - 대상 외부

2. OAuth 클라이언트 ID 발급받기

OAuth 클라이언트 ID 발급받기

이제 열쇠를 복사할 차례입니다. '사용자 인증 정보 > 사용자 인증 정보 만들기 > OAuth 클라이언트 ID > OAuth 클라이언트 만들기'를 클릭하세요. 

OAuth 클라이언트 ID 발급받기

애플리케이션 유형은 '웹 애플리케이션'으로 선택하고, 가장 중요한 '승인된 리디렉션 URI'에 여러분의 리턴 주소(예: http://localhost:8080/test)를 입력해 줍니다.

OAuth 클라이언트 ID 발급받기

항목설명
Client ID애플리케이션을 식별하는 아이디 (공개 가능)
Client Secret절대 유출 금지! 토큰 교환 시 필요한 비밀번호
Redirect URI인증 후 코드를 전달받을 주소

3. 인증 코드(Code)와 액세스 토큰 획득 절차

이제 실제 데이터를 주고받기 위한 5단계 프로세스를 알려드릴게요. 포스트맨(Postman)을 준비하시면 더 편하게 테스트할 수 있습니다.

  1. 인증 URL 생성:
    https://accounts.google.com/o/oauth2/v2/auth?scope=...&client_id=... 형태의 URL을 만들어 브라우저에 입력합니다.
  2. 사용자 로그인:
    구글 로그인 창이 뜨면, 아까 등록한 테스트 계정으로 로그인하고 권한을 승인합니다.
  3. 코드 확인:
    리디렉션된 URL 뒤에 붙은 code=4/0Ad... 부분을 복사하세요. 이 코드는 일회용입니다!
  4. 토큰 교환:
    POST 방식으로 구글 토큰 엔드포인트에 code, client_id, client_secret 등을 실어 보냅니다.
  5. 성공:
    드디어 access_tokenrefresh_token을 손에 넣었습니다! 축하드려요!

💡 리프레시 토큰이 안 나와서 당황하셨나요?

액세스 토큰은 1시간이면 만료됩니다. 그래서 우리는 '리프레시 토큰'이 꼭 필요하죠. 만약 응답값에 리프레시 토큰이 없다면, 첫 인증 URL을 만들 때 access_type=offlineprompt=consent 파라미터를 꼭 추가해 보세요. 사용자가 명시적으로 다시 동의해야 구글이 리프레시 토큰을 던져준답니다.

자주 묻는 질문 (FAQ)

❓ '승인되지 않은 리디렉션 URI' 에러가 떠요.
💡 GCP 콘솔에 등록한 리디렉션 URI와 실제 코드 요청 시 사용하는 URI가 토씨 하나 틀리지 않고 똑같은지 확인해 보세요. 특히 http와 https 구분, 마지막 슬래시(/) 유무도 중요합니다!
❓ 테스트 사용자로 등록했는데도 로그인이 안 돼요.
💡 OAuth 동의 화면 설정 하단에 'Test Users' 섹션에 정확한 이메일 주소를 추가했는지 다시 한번 확인해 보세요. 저장 버튼을 누르는 것도 잊지 마시고요!
❓ 액세스 토큰 유효 기간은 얼마나 되나요?
💡 기본적으로 3,600초, 즉 1시간입니다. 1시간이 지나면 만료되므로 리프레시 토큰을 사용해서 새 액세스 토큰을 발급받아야 합니다.

자, 이제 구글의 데이터 금고를 열 수 있는 황금 열쇠를 손에 넣으셨습니다! 처음엔 조금 복잡해 보여도 한 번 성공하고 나면 익숙해지실 거예요. 이 글이 여러분의 개발 시간을 단 10분이라도 줄여드렸다면 저는 행복합니다. 혹시 하시다가 막히는 부분이 있으면 언제든 댓글 남겨주세요! 그럼 오늘도 즐거운 코딩 하세요! 안녕! 👋


[이 글은 정보 제공 목적이며 구글 서비스의 업데이트에 따라 절차나 UI가 변경될 수 있습니다. 실제 구현 시 공식 문서를 병행 확인하시기 바랍니다.]

댓글 쓰기

다음 이전