/ 가이드 / 카카오 로그인 Firebase 연동
가이드 · 앱 개발

카카오 로그인을 Firebase에 붙이기 — 커스텀 토큰 연동 실전

한국 앱 필수인 카카오 로그인을 Firebase 인증과 연결하는 방법을 정리했습니다. 카카오에서 받은 사용자 정보를 Cloud Function으로 Firebase 커스텀 토큰으로 바꾸는 실전 흐름과 자주 나는 함정까지.

앱몬스터 · 작성 2026-09-17

핵심 요약

카카오는 Firebase 기본 제공 로그인이 아니라서, 카카오 로그인 → 서버(Cloud Function)에서 Firebase 커스텀 토큰 발급 → 앱에서 그 토큰으로 Firebase 로그인 흐름으로 연결합니다. 카카오 사용자 ID를 Firebase UID로 매핑하는 게 핵심입니다.

왜 커스텀 토큰이 필요한가

Firebase 인증은 구글·애플 등은 기본 지원하지만 카카오는 없습니다. 그래서 카카오로 로그인한 사용자를 Firebase가 인정하게 하려면, 서버에서 Firebase 커스텀 토큰을 만들어 앱에 돌려주는 다리가 필요합니다.

전체 흐름

  1. : 카카오 SDK로 로그인 → 카카오 액세스 토큰 획득
  2. 앱 → 서버: 액세스 토큰을 Cloud Function으로 전달
  3. 서버: 카카오 API로 사용자 정보 조회 → kakao_(카카오ID) 형태의 Firebase UID로 커스텀 토큰 발급
  4. 서버 → 앱: 커스텀 토큰 반환
  5. : signInWithCustomToken으로 Firebase 로그인 완료
// Cloud Function (핵심만)
const admin = require('firebase-admin');
exports.kakaoLogin = functions.https.onCall(async (data) => {
  const kakaoToken = data.accessToken;
  // 1) 카카오 사용자 조회
  const me = await fetch('https://kapi.kakao.com/v2/user/me',
    { headers: { Authorization: 'Bearer ' + kakaoToken } }).then(r=>r.json());
  const uid = 'kakao_' + me.id;
  // 2) 최초면 유저 문서 생성 (createUser 누락 주의)
  await admin.firestore().doc('users/'+uid)
    .set({ provider:'kakao', name: me.properties?.nickname||'' }, {merge:true});
  // 3) 커스텀 토큰 발급
  return { token: await admin.auth().createCustomToken(uid) };
});

자주 나는 함정

  • 유저 문서 생성 누락 — 커스텀 토큰만 만들고 users 문서를 안 만들면, 이후 프로필·권한 로직이 “문서 없음”으로 깨집니다. 최초 로그인 시 문서를 함께 생성하세요.
  • 키 해시 미등록 — 안드로이드는 앱 서명 키 해시를 카카오 개발자 콘솔에 등록해야 합니다. 구글 플레이 앱 서명을 쓰면 Play가 생성한 키 해시도 따로 등록해야 합니다.
  • UID 규칙 불일치 — 커스텀 토큰의 UID 형식(kakao_...)과 보안 규칙의 uid 대조가 맞는지 확인하세요.

자주 묻는 질문

애플 로그인도 같이 넣어야 하나요?

소셜 로그인을 제공하는 iOS 앱은 애플 로그인 병행이 심사 요건입니다. 카카오와 함께 애플 로그인을 넣어야 반려를 피합니다.

커스텀 토큰이 안전한가요?

서버(관리자 SDK)에서만 발급되므로 안전합니다. 다만 카카오 액세스 토큰 검증과 서버 키 보관을 철저히 해야 합니다.

연동을 대신 해줄 수 있나요?

React Native·Flutter 앱에 카카오 로그인+Firebase 커스텀 토큰 연동을 구현·디버깅해 드립니다.

함께 읽기: 앱 심사 거절 사유 · 앱 유지보수 서비스

직접 하기 어렵다면

보안 점검·유지보수·앱 개발을 월정액으로 대행합니다. 상황만 알려주시면 범위와 비용을 먼저 정리해 드립니다.

의뢰하기