구글 로그인, 직접 안 짜도 되는 프롬프트 모음

세이링

구글 로그인 직접 연동해보신 분들은 알 거예요.
OAuth는 문서 보면서 하려면 진짜 시간 오래 걸리고, access token 관리, callback 처리, 사용자 정보 매핑까지 은근 복잡하거든요.

근데 ChatGPT한테 딱 이렇게 물어보면, 우리가 직접 찾아보고 고민해야 할 부분까지 다 반영해서 코드를 짜줘요.
설계부터 보안까지 “이건 진짜 개발자가 쓴 것 같다” 싶은 수준으로 말이죠.

이번엔 Google OAuth2를 활용한 소셜 로그인 구현에 필요한 전체 구조를 이렇게 요청해봤어요👇

프롬프트

복사
넌 Next.js App Router 기반의 풀스택 애플리케이션을 구축할 수 있는 시니어 프론트엔드 개발자야. 나는 현재 소셜 로그인 기능 중 Google OAuth2를 활용한 로그인 연동을 구현하려고 해. 아래 환경과 목적, 그리고 요구사항을 기반으로 설계 및 구현에 필요한 전체 코드와 흐름을 작성해줘.

[환경 조건]
- 프레임워크: Next.js 13 이상 (App Router 구조)
- 언어: TypeScript
- 데이터베이스: PostgreSQL (Prisma ORM 사용)
- 인증/인가 방식: Google OAuth2
- 인증된 사용자의 access token은 쿠키(`httpOnly`, `Secure`, `SameSite=Strict`)에 저장
- 인증 처리에는 next-auth를 사용하지 않고, 직접 OAuth 연동 구현

[기능 목표]
1. 구글 OAuth 로그인 버튼 클릭 → Google 인증 창 → 인증 성공 시 redirect URI로 콜백
2. 콜백 처리 후 사용자 정보(email, name, profile image 등)를 수신하고,
   - 기존 유저가 존재하면 로그인 처리
   - 신규 유저라면 자동 회원가입 및 유저 DB 저장
3. 사용자에게 JWT access token 발급 → httpOnly 쿠키로 설정
4. JWT는 서버 사이드 렌더링 시에도 인증 확인이 가능하도록 설정
5. 로그인 상태가 유지되며, 페이지를 새로고침하거나 이동해도 인증 정보가 유지되어야 함
6. 로그아웃 시 쿠키를 완전히 삭제하고 세션 종료

[세부 요구]
- Google Cloud Console에서 필요한 OAuth 설정 방법(redirect URI, client ID/secret 구성법 등)도 요약해서 설명해줘
- Prisma User 모델에는 소셜 로그인 정보(`provider`, `providerAccountId`)가 명확히 들어가야 함
- 인증 실패 / 콜백 오류 / JWT 검증 실패 시 예외 처리 구조를 명확히 해줘
- 쿠키 설정 및 JWT 발급 함수는 유틸화하여 재사용 가능하도록 작성
- API 구조는 `/api/auth/google/start`, `/api/auth/google/callback`, `/api/auth/logout` 으로 명확히 나눠줘
- 코드에는 상세한 주석을 달아서 흐름을 따라가기 쉽도록 해줘
- 클라이언트 컴포넌트에서 로그인 버튼 클릭 시 흐름이 어떻게 동작하는지 포함해서 UI 코드도 같이 제공해줘

[추가 요청]
- JWT는 HS256으로 서명하고, access token 유효기간은 1시간
- access token 만료 시 자동으로 refresh되는 구조는 포함하지 않아도 됨
- 쿠키 설정 시 보안 옵션(`Secure`, `SameSite`, `httpOnly`)이 실제 배포 환경에서도 유효하게 작동하도록 해줘

이 조건을 기반으로 전체 폴더 구조, 코드 예시, 흐름 설명까지 포함한 완성도 높은 구현 가이드를 작성해줘.

댓글 작성

보이지 않는 디자인이 만드는 강력한 경험

"왜 이 앱은 이렇게 사용하기 어려울까?" 우리 모두 이런 경험이 있습니다. 기능은 훌륭한데 사용법이 직관적이지 않아 포기...

사용자 중심 인터페이스 프롬프트

복잡한 메뉴, 알 수 없는 아이콘, 끝없는 클릭... 여러분도 이런 디지털 미로에서 좌절해 본 적 있으신가요? 사용자가 헤매는...

개발

공지

📢[필독] GPT 프롬프트 커뮤니티 이용 가이드

📢[필독] GPT 프롬프트 커뮤니티 이용 가이드

공유

로그인 계속 유지되게 하고 싶을 때, 이렇게 물어봐요

공유

500번째 수동 배포에서 실수한 그날, 모든 걸 자동화하기로 결심했다

공유

새벽 3시에 울린 알림, 그리고 5분 만에 해결한 기적

공유

한 서버가 다운되자 전체 서비스가 마비된 그날

공유

고객이 “왜 이렇게 자주 먹통이 되나요?”라고 물었을 때

공유

99.9%와 99.99%의 차이가 매출 1억원이었다

공유

하나의 거대한 앱이 무너뜨린 우리 팀의 야심

공유

10개 서비스가 하나처럼 움직이는 마법

공유

서드파티 벽에 부딪힌 순간, 한 줄의 코드가 답이었다

공유

망가진 데이터를 살려내는 마법사가 되어보세요!

공유

데이터가 여행을 떠날 때 가져가는 가방 – 직렬화의 비밀!

공유

데이터의 강을 만드는 방법을 찾고 계신가요?

공유

한 집에 여러 세입자, 각자의 프라이버시는 지키면서

공유

물리적 케이블의 한계를 소프트웨어로 뛰어넘다

공유

컨테이너는 가볍고 빠르지만, 보안은 무겁고 복잡하다

공유

캐시가 없으면 못 살지만, 캐시가 틀리면 더 위험하다(분산 캐시 확인 프롬프트)