동도리 개발 로그

Flutter(플러터) - Firebase를 이용한 google Login - iOS 본문

개발/Flutter

Flutter(플러터) - Firebase를 이용한 google Login - iOS

동돌이 2022. 2. 25. 10:45
반응형

firebase를 이용하여 로그인 관리를 개발하던 도중 iOS앱에서 구글로그인을 시도하게되면 오류와 함께 앱이 죽어버리는 일이생겨서 구글링을 통한 오류 해결 과정을 정리 하려한다. 

 

1.  문제

안드로이드는 문제 없이 구글 로그인이 되는데 아이폰 시뮬레이터에서는 앱이 죽어버리는 상황 발생

 

2. 초기 설정 문제

firebase console의 프로잭트 안에 ios 앱에 들어가서 SDK (GoogleService-Info.plist) 를 추가 안한것 부터가 시작이었다.

안드로이드만 생각하다보니 안되는게 당연한 결과

 

중요!

앱 생성시 번들ID를 정확히 지정해줘야하는데 {projectRoot}/ios/Runner.scodeproj/progect.pbxproj 파일의 PRODUCT_BUNDLE_IDENTIFIER <- 이부분에 해당하는 값을 넣어줘야한다. (ex.  com.exmaple.project)

 

정확한 번들ID를 입력하고 생성한 앱에서 아래의 버튼을 눌러 plist 파일을 받아

{projectRoot}/ios/Runner     폴더에 복사를 한다. 

 

중요! 2

plist파일만을 복사하여 넣는다면 iOS앱 빌드 할 때 GoogleService-Info.plist를 못찾는다고 나온다(내가 처음 마주친 오류 - 원래 없었으니..)

이때는 xCode를 열어 해당프로젝트의 ios폴더를 찾아서 열어준다.

Runner 폴더를 오른쪽 클릭하여 Add Files to "Runner" 를 클릭하고 

위에서 다운받은 GoogleService-Info.plist를 찾아서 Add 버튼을 눌러주면 추가가 된다. 

 

중요!!!

이렇게 설정을 해도 앱이 꺼지는 문제가 발생... ㅠㅠ

구글링을 더 해보니 Info.plist에 CFBundleURLSchemes를 설정해줘야 한다고한다.

 

방금 받은 GoogleService-Info.plist 의 REVERSED_CLIENT_ID 부분에 해당하는 URL을 Info.plist에 설정

<key>CFBundleURLTypes</key>
	<array>
	    <dict>
	        <key>CFBundleTypeRole</key>
	        <string>Editor</string>
	        <key>CFBundleURLSchemes</key>
	        <array>
	        	<string>{이부분에추가}</string>
	        </array>
	    </dict>
	</array>

위 설정 키를 복사하여 Info.plist의 중간에 복사해줘야한다. 제일 바깥 dict안쪽에!

 

이렇게 설정을 끝내고 다시 앱을 실행시켜서 확인 결과

google을 이용한 로그인이 정상 작동!!!

 

반응형