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/폴더에 로컬 백업하고,.gitignore에secrets/와*.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 동의 화면 프로덕션 전환: 테스트 사용자 제한 해제하여 누구나 로그인 가능하도록 설정
스토어 에셋 준비 착수: 앱 이름/부제목/키워드 확정, 스크린샷 제작 시작