홈 / 가이드 / 카카오 로그인 연동

카카오 로그인을 Firebase에 붙이기

한국 앱 필수인 카카오 로그인을 Firebase 인증과 잇는 커스텀 토큰 연동 흐름을 실전 코드와 함께 정리했습니다.

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

핵심 답변

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

왜 커스텀 토큰이 필요한가

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

전체 흐름

카카오 → Firebase 로그인 흐름
1
카카오 로그인
앱: 액세스 토큰 획득
→
2
서버로 전달
Cloud Function 호출
→
3
커스텀 토큰 발급
kakao_(ID) UID 매핑
→
4
Firebase 로그인
signInWithCustomToken
// 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)에서만 발급되므로 안전합니다. 다만 카카오 액세스 토큰 검증과 서버 키 보관을 철저히 해야 합니다.

로그인은 되는데 프로필이 비어 있어요.

최초 로그인 시 users 문서를 생성하지 않아 생기는 전형적 증상입니다. 커스텀 토큰 발급과 함께 users 문서를 merge로 생성하도록 하면 해결됩니다.

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

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

무료 점검부터 시작하세요

카카오 로그인 연동에서 막힌 지점(키 해시·커스텀 토큰·문서 생성)만 알려주시면 구현·디버깅을 도와드립니다.

무료 점검 문의 → appmonster.co.kr

문의: appmonster.kr@gmail.com

함께 보기: Firebase 보안 규칙 · 앱 심사 거절 사유 · 구독 결제 붙이기