
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는 딱 이 역할만 하면 된다 👇
- iOS에서 Kakao accessToken (또는 ID Token) 받기
- Kakao API로 토큰 검증
- kakao userId 추출
- uid = kakao:{userId} 생성
- Firebase Admin SDK로 Custom Token 생성
- 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는 다음과 같은 책임을 가진다.
- iOS에서 Kakao accessToken 또는 ID Token을 전달받는다
- Kakao API를 통해 토큰의 유효성을 검증한다
- 검증된 토큰에서 kakao userId를 추출한다
- kakao:{userId} 형태의 Firebase UID를 생성한다
- Firebase Admin SDK를 사용해 Custom Token을 발급한다
- 발급된 customToken을 클라이언트(iOS)에 반환한다
index.js는 로그인 세션을 관리하거나
사용자 데이터를 저장하지 않는다.
오직 인증 결과를 변환하는 역할만 담당한다.
'PulseBoard' 카테고리의 다른 글
| Firebase Cloud Functions index.js 완전 해설 (0) | 2025.12.25 |
|---|---|
| Firebase Authentication의 OpenID Connect를 쓰지 않고Cloud Functions + Custom Token으로 Kakao 로그인을 구현한 이유 (1) | 2025.12.25 |
| Firebase Functions 초기 환경 설정 해보기 (0) | 2025.12.24 |
| 🔥 Firebase Functions 시작하다가 npm 에러와 경고를 만났을 때 정리 (0) | 2025.12.24 |
| 카카오 OpenID Connect를 써도 Firebase Custom Token이 필요한 이유 (0) | 2025.12.24 |