피드로 돌아가기
Dev.toFrontend
원문 읽기
Firebase 기반 Flutter Social Sign-In의 Production-grade 인증 아키텍처 설계
Google & Apple Sign-In in Flutter
AI 요약
Context
소셜 로그인 구현 시 Client ID 설정 오류와 초기화 시점 미준수로 인한 Release 빌드 내 StateError 발생 가능성 상존. 특히 플랫폼별 ID 혼용과 Apple Sign-In의 일회성 데이터 수집 제약으로 인한 데이터 유실 위험 존재.
Technical Solution
- Firebase 및 GoogleSignIn 인스턴스 초기화를 runApp() 이전 단계에서 강제하여 런타임 StateError 방지
- Android/iOS 환경에서도 서버 측 토큰 검증을 위해 Google Cloud Console의 Web Client ID를 SERVER_CLIENT_ID로 단일 적용
- GoogleAuthProvider.credential() 호출 시 idToken과 accessToken을 동시 전달하여 인증 신뢰성 확보
- Apple Sign-In의 rawNonce를 Random.secure()로 생성하여 보안성을 높인 Firebase Credential 연동
- isNewUser 플래그 기반 분기 처리를 통해 Apple Sign-In 시 최초 1회만 제공되는 사용자 이름 즉시 저장 구조 설계
- 로그아웃 시 FirebaseAuth와 GoogleSignIn 인스턴스를 모두 해제하여 세션 잔류 방지 및 로그인 픽커 재활성화
실천 포인트
- [ ] main() 함수 내 Firebase 및 AuthService 초기화 순서 검증 - [ ] Google Cloud Console에서 'Web application' 타입의 Client ID 추출 및 .env 적용 - [ ] Apple Sign-In 구현 시 Random.secure()를 통한 nonce 생성 여부 확인 - [ ] Apple 로그인 신규 유저(isNewUser)에 대한 즉시 데이터 저장 로직 구현 - [ ] Firebase Console 내 Debug 및 Release용 SHA-1 지문 모두 등록