구글 로그인 관련 오류

김동연·2025년 6월 2일

개발기록일지(Flutter)

목록 보기
13/32

구글 로그인 관련 트러블 슈팅

  • 구글 로그인 구현하다 iOS 시뮬레이터에서 Google 로그인이 되지 않고 비정상적인 오류로 시뮬레이터가 종료되는 현상이 있었음.
  • 위의 오류 해결하고서 로그인 성공시 바로 홈 화면으로 넘어가지않고 로그인 페이지에서 로그인을 한번 더 눌러야 넘어가지는 현상 수정.

1. iOS에서 Google 로그인이 되지 않던 문제

1. 증상

  • 앱이 예기치 않게 종료되거나 콘솔에 별다른 에러 없이 실패
  • Google 로그인 버튼을 눌러도 아무 반응이 없음

2. 원인

  • Info.plist 파일에 URL scheme 등록 누락
  • Xcode Clean Build 미실행으로 이전 빌드 캐시가 남아 있었음
  • GoogleService-Info.plist가 제대로 포함되지 않거나 Bundle Identifier 불일치

3. 시도한 해결 방법

  1. GoogleService-Info.plist를 Xcode 프로젝트에 직접 추가하고 Target > Build Phases > Copy Bundle Resources에 포함되었는지 확인
  2. Firebase 콘솔에 등록된 iOS Bundle ID가 실제 프로젝트와 일치하는지 확인
  3. Info.plist에 아래와 같은 항목을 추가
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>com.googleusercontent.apps.xxxxxxxxxxxx</string>
        </array>
    </dict>
</array>
  • 위의 문자열은 GoogleService-Info.plist 파일의 REVERSED_CLIENT_ID 값을 그대로 사용함
  1. Xcode에서 Product > Clean Build Folder 실행 (Shift + Command + K)
  2. 시뮬레이터에서 앱 삭제 후 재설치 및 실행

4. 최종 해결

  • Info.plist에 올바른 URL scheme 추가
  • Clean Build 후 실행
  • Google 로그인이 정상적으로 동작함

2. Google 로그인 후 자동으로 홈 화면으로 이동하지 않는 문제

1. 증상

  • 로그인 성공 후 홈 화면으로 자동 전환되지 않음
  • 로그인 성공 메시지는 보이지만 버튼을 한 번 더 눌러야 전환됨
  • 또는 화면을 터치해야 홈 화면이 나타남

2. 원인

  • 로그인 후 사용자 인증을 기다리기 위해 authStateChanges().firstWhere()를 사용했으나, 비동기 흐름의 타이밍 이슈로 UI 반영이 지연됨
  • WidgetsBinding.instance.addPostFrameCallback() 안에서 Navigator.pushReplacement()를 호출함으로써 프레임 타이밍 충돌 발생

3. 시도한 해결 방법

  1. authStateChanges().firstWhere() 사용하여 로그인 완료 감지
  2. addPostFrameCallback() 안에서 Navigator.pushReplacement() 호출

4. 최종 해결

  • userCredential.user를 직접 확인하여 인증 완료 여부 판단
  • addPostFrameCallback() 제거
  • if (!mounted) return; 체크 후 즉시 Navigator.pushReplacement() 호출
  • 로그인 후 한 번의 클릭으로 홈 화면 전환이 정상적으로 이루어짐

5. 코드 예시 (정상 동작 방식)

if (!mounted) return;

Navigator.pushReplacement(
  context,
  MaterialPageRoute(builder: (_) => const MyHomePage()),
);

3. 요약

항목문제 요약해결 방법 요약
iOS에서 Google 로그인 실패Info.plist 설정 누락, GoogleService-Info 미포함<CFBundleURLTypes> 추가 및 Clean Build
로그인 후 자동 전환 안됨인증 감지 타이밍 및 Navigator 호출 시점 문제addPostFrameCallback 제거 후 Navigator.pushReplacement 직접 호출

0개의 댓글