260311_Google Sign-In & Apple Sign-In

Eungae's avatar
Mar 10, 2026
260311_Google Sign-In & Apple Sign-In

TIL - 2026-03-11

오늘 새롭게 알게 된 것

  • GoogleSignIn에 serverClientId를 명시적으로 지정해야 하는 경우가 있다. 패키지명을 변경하면 Firebase가 자동으로 매칭하던 OAuth 클라이언트가 깨질 수 있어서, GoogleSignIn(serverClientId: '...') 형태로 Web client ID(client_type: 3)를 직접 넣어줘야 토큰 교환이 정상 동작한다.

  • iOS Apple Sign-In은 코드 외에 3곳의 설정이 동시에 맞아야 한다. Runner.entitlements(com.apple.developer.applesignin), Apple Developer Portal(App ID capability + Services ID), Firebase Console(Apple 프로바이더 + 비공개 키) — 하나라도 빠지면 런타임에서 실패한다.

  • Apple 비공개 키(.p8)는 한 번만 다운로드 가능하다. 분실하면 재발급해야 하므로 secrets/ 폴더에 로컬 백업하고, .gitignoresecrets/*.p8을 추가해 Git에 올라가지 않도록 보호해야 한다.

  • Android 패키지명 변경 후 google-services.json에 새 패키지의 client_type: 1 (native OAuth) 항목이 자동으로 추가되지 않는다. Firebase Console에서 debug SHA-1을 먼저 등록한 뒤 google-services.json을 재다운로드해야 해당 항목이 포함된다.

오늘 해결한 문제나 고민

  • Android Google Sign-In 실패 문제 해결: 패키지명을 바꾼 뒤 google-services.json에 native OAuth 클라이언트가 없어서 로그인이 안 됐다. keytool로 SHA-1을 뽑아 Firebase에 등록하고, json을 재다운로드하여 client_type: 1 항목을 확보했다.

  • iOS Apple Sign-In 인프라 세팅 완료: entitlements 파일 수정, Services ID 생성, Firebase Apple 프로바이더 활성화까지 한 흐름으로 처리했다. 실기기 테스트만 남은 상태.

  • 문서 관리 방식 개선: plan_current.md에 Phase별 "수동 작업 체크리스트"를 추가해서, 코드는 완료됐지만 콘솔 설정이 빠져있는 항목을 한눈에 추적할 수 있게 정리했다. "코드 완료"와 "실제 동작 완료"를 분리해서 관리하는 게 런칭 전에 중요하다는 걸 느꼈다.

  • orders.md 정리: 원래 raw 메모 형태로 흩어져 있던 작업 지시서를 상태 표시(✅/❌)와 체크리스트 형태로 재구성해서, 어디까지 끝났고 뭐가 남았는지 명확하게 만들었다.

내일의 핵심 목표

  • 실기기 테스트: Android Google Sign-In, iOS Apple Sign-In을 실기기에서 직접 돌려보고 정상 동작 확인

  • Phase 52 수동 작업 검증: Crashlytics 대시보드 데이터 수신 여부, Secret Manager 키 등록 상태 확인

  • Google OAuth 동의 화면 프로덕션 전환: 테스트 사용자 제한 해제하여 누구나 로그인 가능하도록 설정

  • 스토어 에셋 준비 착수: 앱 이름/부제목/키워드 확정, 스크린샷 제작 시작

Share article

나새끼메이커