Social Login Kit — React
카카오·네이버·구글 소셜 로그인 서버와 React 컴포넌트. 설치 즉시 동작하고, 기존 회원 시스템으로 전환할 수 있습니다.
ReactNext.jsFastifyNode.js
주요 기능
- 카카오·네이버·구글 로그인
- React 로그인 버튼·콜백·보호 화면 컴포넌트
- PKCE·서명된 state 쿠키
- Refresh token 회전과 재사용 감지
- 내장 SQLite → 고객 API/DB 전환
- 운영 점검 스크립트
무엇을 해결하나요
카카오·네이버·구글 소셜 로그인을 안전하게 붙이는 데 필요한 서버 코드와 React 프론트 컴포넌트를 바로 쓸 수 있는 형태로 제공합니다. 설치하면 내장 SQLite로 바로 동작하고, 나중에 고객사 회원 시스템(API 또는 DB)으로 전환할 수 있습니다.
이런 곳에 맞습니다
- React와 자체 서버로 서비스를 직접 개발해 운영하는 회사 (개발자 1명 이상)
- 소셜 로그인을 처음 붙이거나, 직접 만든 로그인 코드의 보안이 걱정되는 경우
이런 경우에는 맞지 않습니다
- 카페24·아임웹·Wix·식스샵 등 쇼핑몰·홈페이지 빌더를 쓰는 경우: 빌더에 들어 있는 소셜 로그인 기능을 켜서 사용하세요.
- 워드프레스 등 CMS 플러그인으로 운영하는 경우
- 다른 회사에 납품할 결과물에 넣으려는 경우(개발 외주사): 별도로 문의해 주세요.
보안 설계
- Authorization Code 흐름 + 서명된 state 쿠키, PKCE(카카오·구글) 적용, 토큰을 URL에 노출하지 않음
- Access token(15분)은 프론트 메모리, Refresh token은 HttpOnly 쿠키 + DB에는 해시만 저장
- Refresh token 회전과 재사용 감지(세션 묶음 전체 폐기), 다중 탭 동시 갱신 10초 유예
- /auth/refresh·/auth/logout Origin 검사(CSRF 방어), returnTo 상대 경로만 허용(오픈 리다이렉트 방지)
- provider가 인증한 이메일일 때만 기존 회원 자동 연결(계정 탈취 방지)
저장 모드
- 기본: 내장 SQLite (DB 서버·Docker 불필요)
- 방법 1: 고객사 회원 API 호출 (Spring, PHP 등 Node가 아닌 백엔드)
- 방법 2: 고객 DB 기존 회원 테이블 직접 연동 (PostgreSQL/MySQL 참고 구현)
다운로드와 지원
- 입금이 확인되면 라이선스가 발급되고, '내 다운로드'에서 바로 내려받을 수 있습니다(다운로드 주소는 10분 동안만 유효).
- 업데이트 이용 기간과 이슈 지원 기간은 플랜별로 다르며, 결제일부터 계산합니다.
포함 구성
- packages/core: provider 어댑터, 계정 연결 정책, 토큰 발급·회전
- packages/server: Fastify 플러그인, SQLite 저장소, 고객 API 어댑터, 마이그레이션 도구
- packages/client-core: 세션 복구, 토큰 자동 갱신, 탭 간 로그아웃 동기화
- packages/client-react: AuthProvider, useAuth, SocialLoginButton, AuthCallback, RequireAuth
- apps/api: 데모 서버와 운영 스크립트(check-env, migrate:api, verify:customer-api)
- examples/react-vite: 로그인·콜백·보호 화면·로그아웃 예제
- examples/direct-db-postgres: 방법 2 참고 구현
- docs: 셀프 설치 매뉴얼, React 연결 가이드, provider 콘솔 설정, 마이그레이션 가이드
설치 방법
- 압축을 풀고
pnpm install .env.example을.env로 복사하고 provider 키 입력pnpm check-env로 설정 점검 →pnpm dev- 예제 앱(examples/react-vite)에서 로그인 흐름 확인 후 자사 프론트에 컴포넌트 연결
지원 환경
- React 18 / 19 (Vite, CRA 등)
- Next.js App Router (클라이언트 컴포넌트)
- Node.js 22.13 이상 (24 LTS 권장)
- Node.js 22.13 이상, pnpm
- 소셜 개발자 콘솔 계정 1개 이상 (카카오·네이버·구글 중)
자주 묻는 질문
Next.js에서도 쓸 수 있나요?
App Router의 클라이언트 컴포넌트에서 사용할 수 있습니다. 서버 컴포넌트에서 사용자를 확인하는 방법은 매뉴얼의 예시를 참고해 주세요.
기존 회원 DB가 있는데 연동할 수 있나요?
고객사 회원 API를 호출하는 방법과 기존 회원 테이블에 직접 연결하는 방법(PostgreSQL/MySQL 참고 구현)을 모두 제공합니다.
프로젝트가 여러 개면 어떻게 하나요?
1 라이선스는 프로젝트(서비스·앱) 1개용입니다. 같은 프로젝트의 개발·스테이징·운영 환경은 하나로 봅니다. 다른 프로젝트에 쓰려면 라이선스를 추가로 구매해 주세요.
외주로 개발해 납품하는 프로젝트에 써도 되나요?
라이선스는 구매자가 직접 개발·운영하는 프로젝트 1개에 사용할 수 있습니다. 다른 회사에 납품하는 결과물에는 쓸 수 없으니 별도로 문의해 주세요.
업데이트 이력
공개된 버전 이력이 아직 없습니다.
환불 정책
환불 및 청약철회
- 다운로드 전: 결제일로부터 7일 안에 전액 환불해 드립니다.
- 다운로드 후: 디지털 콘텐츠의 특성상 청약철회가 제한됩니다(전자상거래법 제17조 제2항 제5호). 주문 단계에서 이 내용을 고지하고 동의를 받습니다.
- 상품 하자: 표시·광고 내용과 다르거나 계약 내용과 다르게 이행된 경우, 공급받은 날부터 3개월 이내 또는 그 사실을 안 날(알 수 있었던 날)부터 30일 이내에 청약철회할 수 있습니다.
- 환불이 완료되면 해당 주문의 라이선스와 다운로드 권한은 즉시 정지됩니다.
- 환불은 입금하신 계좌로 영업일 기준 3일 안에 처리합니다.
초안입니다. 법령·사업자 정보 확인 후 확정합니다.