728x90 SMALL 분류 전체보기567 소셜 로그인 이후 프로필 작성 온보딩 설계 (Firebase Auth + Firestore + Storage) 소셜 로그인(Google / Apple / Kakao / Naver)을 모두 구현한 뒤,다음으로 고민해야 할 것은 **“로그인 이후 사용자를 어떻게 서비스에 진입시킬 것인가”**이다. 단순히 로그인에 성공했다고 해서 바로 서비스를 사용하게 만드는 것이 항상 최선은 아니다.대부분의 서비스는 로그인 이후 최소한의 사용자 프로필 정보를 요구한다. 이 글에서는 Firebase Auth 기반 소셜 로그인 이후, 최초 1회만 프로필 작성 화면을 노출하는 온보딩 로직을 어떻게 설계했는지 정리한다. 1. 문제 정의현재 앱의 상태는 다음과 같다.Firebase Auth로 소셜 로그인 완료 가능uid 발급 및 인증 상태 관리 가능아직 서비스 레벨의 “회원 프로필”은 존재하지 않음이 상태에서 발생하는 질문은 하나다.“로그인.. 2026. 1. 1. Firebase Functions로 카카오/네이버 소셜 로그인 Custom Token 발급하기 문제: iOS에서 소셜 accessToken만으로 Firebase 로그인할 수 없을까?iOS에서 카카오/네이버 로그인에 성공하면 accessToken을 얻는다.하지만 Firebase Auth는 이 accessToken을 직접 받아 로그인할 수 없다(Apple/Google 제외 케이스).대신 Firebase는 Custom Token 로그인을 제공하는데, 이 토큰은 신뢰된 서버에서만 생성 가능하다.즉, 필요한 구조는 다음과 같다.iOS에서 소셜 로그인 후 accessToken 획득iOS → Cloud Functions로 accessToken 전달Functions가 발급자(Kakao/Naver) API로 토큰을 검증검증된 사용자에 대해 Firebase Custom Token 발급iOS가 Custom Token.. 2025. 12. 31. Git에서 push / pull / merge 순서가 꼬였을 때 — 원인과 실무적 해결 전략 개인 프로젝트에서 네이버 로그인 기능을 구현한 뒤feature 브랜치를 main에 머지하는 과정에서 다음과 같은 에러를 마주했다.! [rejected] main -> main (fetch first)Updates were rejected because the remote contains work that you do not have locally. 혼자 작업하는 저장소인데 왜 이런 에러가 발생했을까?그리고 이런 상황은 실무에서 문제가 될까? 이번 글에서는 실제로 겪은 Git 흐름 꼬임 사례를 바탕으로,원인 분석과 실무에서 사용하는 예방 전략까지 정리해본다. 1. 문제 상황 요약작업 흐름은 대략 다음과 같았다.feature/firebase-auth-naver 브랜치에서 작업 완료GitHub에서 Pull R.. 2025. 12. 31. 🔐 iOS 네이버 로그인 키 관리 방법 (xcconfig + Info.plist + ClientConfiguration) 네이버 로그인을 구현하면서 가장 신경 써야 하는 부분 중 하나는Client ID, Client Secret 같은 민감한 키를 어떻게 관리할 것인가다.이번 글에서는xcconfig + Info.plist + 코드 분리 구조를 사용해네이버 로그인 키를 안전하고 깔끔하게 관리하는 방법을 정리한다. ✅ 목표 구조 요약우리가 최종적으로 만든 구조는 아래와 같다.Secrets.xcconfig (실제 값, Git 추적 ❌) ↓ (Build Time 치환)Info.plist ($(VAR) 형태로 참조) ↓ (Runtime)ClientConfiguration (코드에서 안전하게 접근) ↓AppDelegate (SDK 초기.. 2025. 12. 30. 🤔 SocialAuthCoordinator 생성 조건 및 구조 설계 1️⃣ SocialAuthCoordinator를 만든 이유 (왜 이 클래스가 필요했나)소셜 로그인은 한 단계짜리 작업이 아니다.카카오 로그인을 예로 들면 실제 흐름은 이거야:Kakao SDK → accessToken 발급서버(Firebase Functions) → accessToken 검증서버 → Firebase Custom Token 생성앱 → Firebase Auth signInFirebase Auth → 인증 상태 변경👉 “로그인”이라는 말 하나에 4~5개의 책임이 섞여 있음 ❌ Coordinator가 없을 때의 문제만약 이걸 AuthService 하나에 몰아넣으면:Kakao / Naver SDK를 알아야 하고Firebase Functions 호출을 알아야 하고Custom Token 구조를 알아야.. 2025. 12. 29. 🤔 async, await VC CompletionHandler 언제 써야하나?(KakaoAuthHandler) https://developers.kakao.com/docs/latest/ko/ios/getting-started Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해 보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.comhttps://developers.kakao.com/docs/latest/ko/kakaologin/common Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해 보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 구글에 겅색해보면, "카카오 로그인"을 async/await로 구현한 블로.. 2025. 12. 28. 🎫 KakaoAuthHandler 는 왜 async/await를 버리고 completion 기반으로 되돌렸나? 기존 로그인 구현 코드private extension KakaoAuthHandler { /// 카카오톡 로그인 /// /// Kakao SDK의 callback 기반 API를 /// Swift async/await 스타일로 래핑합니다. func loginWithKakaoTalk() async throws -> String { try await withCheckedThrowingContinuation { continuation in UserApi.shared.loginWithKakaoTalk { oauthToken, error in // 1️⃣ Kakao SDK 에러 발생 .. 2025. 12. 28. ✅ Kakao 로그인 전체 로직 흐름 (파일 순서 기준) 0️⃣ 출발점 — 사용자 액션사용자 └─ LoginViewController └─ 카카오 로그인 버튼 탭 1️⃣ LoginViewController역할UI 이벤트 처리“카카오로 로그인하겠다”는 의도만 전달인증 로직은 절대 모름authViewModel.login( provider: .kakao, from: self)LoginViewController⬇️AuthViewModel 2️⃣ AuthViewModel역할View ↔ Service 중계Auth 상태 관찰 (onAuthStateChanged)에러 전달authService.login( with: .kakao, from: presentationContext, completion: ...)AuthViewModel⬇️AuthS.. 2025. 12. 28. Firebase Functions + Kakao 로그인 문제 해결 정리 문제 상황 요약카카오 로그인을 구현하면서 다음과 같은 현상이 발생했다.✅ 카카오 SDK 로그인 성공✅ accessToken 정상 발급❌ Firebase Functions 호출 시 실패❌ iOS에서는 항상 아래 에러만 발생FunctionsError(code: INTERNAL)❌ Firebase Auth 로그인 실패❌ 카카오톡 로그인 화면이 바로 닫히고 다시 Login 화면으로 복귀처음에는 index.js 코드 문제, region 설정, 중복 호출, SceneDelegate, Task 구조 등을 의심했다. 1️⃣ 처음 사용했던 구조 (개선 전)Firebase Functions (개선 전)const { onRequest } = require("firebase-functions/v2/https");exports.. 2025. 12. 27. 🤔 카카오, 네이버 로그인 - accessToken 처리 방향 🔑 결론 한 줄Firebase Functions 연동 → Custom Token 파싱 → signIn(withCustomToken:) 는AuthService 안에 직접 쓰지 말고,“공용 컴포넌트”로 분리하는 게 정답이다. 1️⃣ 지금 정확히 짚은 문제의 본질의문을 구조로 풀어보면 이거야 👇Kakao 로그인 ├─ KakaoAuthHandler → accessToken └─ (공통 단계) ├─ Firebase Functions 호출 ├─ Custom Token 파싱 └─ Firebase signInNaver 로그인 ├─ NaverAuthHandler → accessToken └─ (공통 단계) ├─ Firebase Functions 호출 ├─ Custom Token .. 2025. 12. 26. KakaoAuthHandler는 “무엇을 기준으로 설계했나?” 한 문장 요약Apple / Google 로그인 핸들러와 “동일한 추상화 레벨”을 유지하면서,Kakao SDK의 특성을 Swift Concurrency에 맞게 감싸는 것 이게 설계의 핵심이야. 2️⃣ 설계 기준 ① — “Handler 패턴” 유지이미 네 프로젝트에 존재하는 구조이미 이런 패턴을 쓰고 있어:AuthService ├─ AppleAuthHandler ├─ GoogleAuthHandler └─ (KakaoAuthHandler ← 여기에 추가) 이 구조의 장점은 명확:AuthService는 로그인 전략을 선택만 함각 Handler는 자기 SDK만 책임ViewModel은 AuthService만 의존👉 그래서 Kakao도 무조건 Handler로 들어가야 함 3️⃣ 설계 기준 ② — “책임을 acces.. 2025. 12. 26. ▶️ index.js 파일 설치기 (버전 이슈 해결 포함) ✅ 다음 단계 체크리스트 1️⃣ axios 설치 (반드시 functions 디렉토리에서)Firebase Cloud Functions는 프로젝트 루트가 아니라 functions/ 폴더가 하나의 Node.js 프로젝트야.👉 그래서 axios도 functions 폴더에 설치해야 한다.cd functionsnpm install axios 설치가 끝나면:functions/package.json에 axios가 추가되고functions/node_modules/axios가 생긴다📌 루트(PulseBoard)에서 설치하면 안 된다→ Functions 배포 시 axios를 못 찾는 에러 발생함 2️⃣ 설치 확인 (중요)cat package.json dependencies 안에 아래가 있으면 OK:"dependenci.. 2025. 12. 26. 🚀 axios 설치와 역할 - 서버에서 토큰 검증이 필요한 이유! ❓ axios는 왜 필요한가? axios는 HTTP 요청을 보내는 라이브러리야.서버는 Kakao API에서https://kapi.kakao.com/v2/user/me 로 토큰 검증 / 유저 정보 조회를 해야 해.이때 HTTP 요청이 필요하고,Node.js 에서는 이런 요청을 직접 보내기 어렵기 때문에우리가 쓰는 도구가 바로 axios야. 🔍 axios가 하는 일const response = await axios.get( "https://kapi.kakao.com/v2/user/me", { headers: { Authorization: `Bearer ${accessToken}` } }); 이 한 줄은:📌 Kakao 서버에 HTTP GET 요청📌 accessToken을 인증 헤더로 보내서📌 사용자.. 2025. 12. 26. Firebase Cloud Functions index.js 완전 해설 – Kakao 로그인 → Firebase Custom Token 변환 서버 이해하기 0️⃣ 이 글에서 다루는 전제Node.js 경험 ❌Firebase Cloud Functions 처음Kakao 로그인 + Firebase Auth 연동이 목표이 파일 하나(index.js)가 서버의 전부 1️⃣ 이 파일(index.js)이 “무엇을 하는 파일인가?”먼저 한 문장으로 요약하면 이거다.index.js는“카카오 로그인 결과를Firebase가 신뢰할 수 있는 인증 토큰으로 변환해주는 서버 코드”다. 조금 더 풀면:iOS 앱에서 카카오 accessToken을 받아서카카오 서버에 진짜 유효한 토큰인지 물어보고문제가 없으면Firebase Custom Token을 만들어서다시 iOS 앱에 돌려준다👉 이 파일은 로그인 서.. 2025. 12. 25. Firebase Authentication의 OpenID Connect를 쓰지 않고Cloud Functions + Custom Token으로 Kakao 로그인을 구현한 이유 카카오 로그인을 Firebase Authentication과 연동하려고 조사하다 보면자연스럽게 이런 의문이 든다.“Firebase Authentication에 OpenID Connect 제공업체를 직접 추가하면카카오 로그인도 서버 없이 바로 붙일 수 있는 거 아닌가?” Firebase 콘솔에도 실제로 ‘새 OIDC 제공업체 정의’ 메뉴가 있고,카카오 역시 OpenID Connect(OIDC)를 지원한다고 문서에 명시돼 있다.그럼에도 불구하고,나는 Firebase Cloud Functions + Custom Token 구조를 선택했다.이 글은 그 판단을 개념이 아니라 근거 자료를 바탕으로 정리한 기록이다. 1. Firebase Authentication의 OpenID Connect는 무엇을 전제로 하나?F.. 2025. 12. 25. 이전 1 2 3 4 ··· 38 다음 728x90 LIST