본문 바로가기
PulseBoard

Firebase - Functions 의 Index.js 역할

by 밤새는 탐험가89 2025. 12. 24.
728x90
SMALL

 

https://explorer89.tistory.com/574

 

Firebase Functions 초기 환경 설정 해보기

https://explorer89.tistory.com/573 🔥 Firebase Functions 시작하다가 npm 에러와 경고를 만났을 때 정리Firebase Cloud Functions를 사용하기 위해Firebase CLI를 설치하려고 아래 명령어를 실행했다.npm install -g firebase-t

explorer89.tistory.com

 

이전에 작성한 글에서 이어진 내용이다. 

Firebase functions 설정을 완료하면 프로젝트 폴더에 "functions"라는 폴더가 생긴다. 

 

이 폴더 내의 Index.js가 하는 역할을 다음과 같다.

 

✅ 지금 index.js의 책임 

Cloud Functions의 index.js는 딱 이 역할만 하면 된다 👇

  1. iOS에서 Kakao accessToken (또는 ID Token) 받기
  2. Kakao API로 토큰 검증
  3. kakao userId 추출
  4. uid = kakao:{userId} 생성
  5. Firebase Admin SDK로 Custom Token 생성
  6. customToken 반환

👉 이 흐름이 Firebase + Kakao Custom Auth의 정석이야.

 

 

🔍 각 단계의 “정확한 의미”를 한 번 더 정리해보면

1️⃣ iOS → Kakao Token 전달

  • iOS는 이미 카카오 로그인 성공 상태
  • 서버는 “카카오에서 인증받은 사용자”인지 확인만 하면 됨

❗ 서버는 로그인을 대신하지 않는다
검증 + 변환만 담당

 

2️⃣ Kakao API로 토큰 검증

  • accessToken or ID Token이 진짜 카카오가 발급한 것인지
  • 만료되지 않았는지
  • 조작되지 않았는지

👉 이 단계가 서버가 필요한 핵심 이유

 

3️⃣ kakao userId 추출 

  • OIDC 기준이면 sub
  • 일반 API 기준이면 id

👉 이 값이 Firebase UID의 기준

 

4️⃣ Firebase UID 생성 

kakao:123456789

 

  • Provider prefix를 붙이는 이유:
    • 나중에 Google / Apple / Naver와 충돌 방지
    • 계정 병합 가능성 확보

 

5️⃣ Custom Token 생성

admin.auth().createCustomToken(uid)

 

  • 이 토큰은:
    • Firebase만 신뢰
    • 로그인 전용
    • 짧은 수명

👉 JWT이지만 Firebase 전용 JWT

 

6️⃣ customToken 반환

  • 서버의 역할은 여기서 끝
  • 로그인은 iOS가 수행

 

❗ 중요한 경계선 (아주 중요)

index.js는 “로그인 서버”가 아니다.

  • ❌ 세션 관리 안 함
  • ❌ 사용자 정보 저장 안 함
  • ❌ Firestore 접근 안 함

👉 오직:

Kakao 인증 결과 → Firebase 인증 결과로 “번역”

 

functions/index.js가 담당해야 하는 역할

Firebase Cloud Functions의 index.js는
카카오 로그인을 직접 처리하는 서버가 아니다.

이 파일의 역할은 오직 하나다.

카카오에서 인증된 사용자를
Firebase가 이해할 수 있는 Custom Token으로 변환하는 것

 

이를 위해 index.js는 다음과 같은 책임을 가진다.

  1. iOS에서 Kakao accessToken 또는 ID Token을 전달받는다
  2. Kakao API를 통해 토큰의 유효성을 검증한다
  3. 검증된 토큰에서 kakao userId를 추출한다
  4. kakao:{userId} 형태의 Firebase UID를 생성한다
  5. Firebase Admin SDK를 사용해 Custom Token을 발급한다
  6. 발급된 customToken을 클라이언트(iOS)에 반환한다

index.js는 로그인 세션을 관리하거나
사용자 데이터를 저장하지 않는다.
오직 인증 결과를 변환하는 역할만 담당한다.

728x90
LIST