일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 숫자 포맷
- 이벤트 기반 아키텍처
- microsoft.entityframeworkcore.design
- 안드로이드 구글 로그인
- google sign-in
- 시간더하기
- c# 포맷
- google 로그인
- c# 시간계산
- 루즈 커플링
- 구독패턴
- 유니티 구글 연동
- 웹서버 만들기
- 실무코딩
- 문자열 포맷
- switch 활용
- 개발
- 구글 로그인 연동
- 구글 로그인 시도
- 프로그래밍
- 구글로그인
- unity google 로그인
- unity
- firebase auth
- cshop
- C# Switch
- unity 구글 로그인
- 구글로그인 시도
- 2차방정식
- c#
- Today
- Total
Debug & Think
[Unity] 구글 로그인 연동 적용(Google Sign-In, Firebase Auth) 본문
Unity 2022.3.3 + Firebase Auth + Google Sign-In 연동 기록
1. 개발 환경
- Unity 버전: 2022.3.3f1 (LTS)
- Firebase Auth Unity 패키지: FirebaseAuth_11.6.0
- Google Sign-In 플러그인: google-signin-plugin-1.0.4 (Parse 폴더 제외 후 임포트)
- 빌드 설정: IL2CPP / ARM64
참고 문서: Google for Developers - Unity용 Google 패키지
- 빌드 설정: IL2CPP / ARM64

2. 기본 세팅 절차
1. Keystore 생성 및 SHA-1 추출
- keystore 설정

// 터미널에서 바로 경로까지 한번에 적거나
keytool -list -keystore C:\Users\gksmf\Desktop\Project\UnityThairdParty\TestThirdParty3\user.keystore
// user.keystore있는 폴더에서 터미널 열었으면
keytool -list -v -keystore user.keystore
// alias 이름을 모른다면, 다음 명령어로 모든 alias 리스트를 확인
keytool -list -v -keystore <your_keystore_path>
keytool -list -v -keystore C:\Users\gksmf\Desktop\Project\UnityThairdParty\TestThirdParty3\user.keystore
// SHA-1 추출
keytool -list -v -keystore <your_keystore_path> -alias <your_alias_name>
keytool -list -v -keystore C:\Users\gksmf\Desktop\Project\UnityThairdParty\TestThirdParty3\user.keystore -alias third party test


2. Firebase Console
- 안드로이드 앱 등록 (패키지명 + SHA-1)
- google-services.json 다운로드 후 Assets/에 배치

- Web Client ID 확보
- Firebase Console → Authentication → 로그인 방법 → Google → 웹 클라이언트 ID 복사
- Unity 설정
- External Dependency Manager → Android Resolver → Resolve 실행
3. Package Import
•Firebase




Enable 클릭.



- 임포트할 때 주의점은 패키지 내용 중 Parse 파일은 Task 관련 부분 경로 충돌이 발생하기 때문에 제외하고 임포트를 진행
- Google Version Handler 창이 뜨면 모두 Apply
4. 에러 발생 및 해결과정
❗Google Import하고 Library 에러발생

해결 : Unity 닫고 Library폴더 삭제 후 재실행
❗ Assets 폴더 안에 google-services 파일없어서 오류 발생
개발 진행했을 때는 미리 폴더위치하지 못해서 에러 발생. Assets 폴더로 파일 이동
❗ Firebase, Unity 패키지 이름이 맞지 않아서 발생



이전에는 이렇게 이름이 맞지 않아서 떴었다.
해결 : 이름 맞춰서 재빌드
❗ [빌드실패] Android Gradle Plugin 버전과 compileSdkVersion 불일치

- Unity 2022.3.3f1이 포함하는 AGP 7.1.2는 compileSdk 32까지 공식 지원
- compileSdk 36을 사용하면 AGP 7.1.2에서 리소스 처리가 제대로 안 되어 오류 발생
- Unity 버전을 업그레이드하기: Unity 2022.3 시리즈 중 더 최신 버전(예: 2022.3.37f1 이상)은 AGP가 7.4.2 이상으로 업데이트되어 있어서 compileSdk 36을 정상 지원
해결 : 앱빌드 32로 낮추거나 VS Unity 2022.3.37f1로 업데이트
현재 인강대로 학습해야 되기 때문에 Unity 버전을 변경하기에는 부담감이 있어서 unity 버전은 변경하지 않고 진행

✅위의 모든 에러 해결 후 구글 로그인 창 뜨게 완료!
퇴근하고 거의 한 달 동안 삽질하다가 파란 구글 로그인창이 떴을 때
진심으로 소리를 질렀다!



하지만 구글 로그인창만 떴을 뿐 로그인 완료가 되지 않으며 에러 발생.
🔹상세 로그 볼 수 있는 LogViewer import



- Report 오브젝트 생성
- 이후 다시 빌드 후 에디터 콘솔창처럼 로그 확인

❗ [로그인 실패] 웹 클라이언트 ID가 google-services.json과 달라서 생긴 이슈
이전에 테스트 진행하면서 파이어베이스에 SHA1를 여러번 수정됐고, google-services.json이 이전 걸로 돼있어서 생긴 이슈





해결 : google-services.json 파일 최신
더 자세한 로그 남기게 코드 수정
// 기존 실패했을 때 남겼던 록,
if (task.IsFaulted)
{
LogError($"X Google Sign-In failed:\n{task.Exception}");
return;
}
// ⬇️⬇️ 더 자세하게 남기는 로그
if (task.Exception != null)
{
// 디테일하게
foreach (var ex in task.Exception.Flatten().InnerExceptions)
{
LogError($"[EX TYPE] {ex.GetType()}");
LogError($"[EX MESSAGE] {ex.Message}");
if (ex is Google.GoogleSignIn.SignInException gEx)
{
// 리플렉션으로 모든 속성 출력
var props = gEx.GetType().GetProperties();
foreach (var prop in props)
{
try
{
var value = prop.GetValue(gEx);
LogError($"[PROP] {prop.Name} = {value}");
}
catch { }
}
}
}
}
❗ [로그인 실패] SignInException (메시지 비어있음)
[시도] 해결방법 x. proguard로 인한 클래스 제거 (AAB, APK 빌드 시)
- Proguard로 Google Sign-In 관련 클래스가 제거된 경우 발생 가능
🔧 해결 방법:
- Assets/Plugins/Android/proguard-user.txt 파일 생성
- 아래 내용 추가:
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class com.google.signin.** { *; }
-dontwarn com.google.signin.**


하지만 에러는 그대로 발생.
[참고] 구글링 및 GPT를 통해 Google Cloud Console에서 OAuth 동의 화면 테스트 사용자 확인하라는 내용이 나올 수 있는데
- Firebase에서 프로젝트를 만들면 Google Cloud Console에 동일한 프로젝트가 자동 생성되고,
- 그래서 수동 설정을 제한해서 "OAuth 개요" 화면만 보이게 되는 경우가 있다.
때문에 화면 테스트 사용자 확인하라는 내용은 해결방법이 아니다.
해결⬇️⬇️
Google Cloud Console에서 Android OAuth 클라이언트 등록
1. Google Cloud Console > 사용자 인증 정보 이동
2. Android 클라이언트 클릭 → 패키지명과 SHA-1 값이 맞는지 확인
➡️ 그동안의 에러는 Android 클라이언트의 SHA-1 값이 맞지 않아서 생긴 에러
3. 맞지 않으면 새로 생성
- 이름: Android client for com.DefaultCompany.IdleGame
- 패키지명: Unity Player Settings → Package Name 값
- SHA-1: 위에서 복사한 값
4. 저장
- Web Client ID (616520914294-8ukc...) → Firebase Web SDK에서 사용
- Android Client ID (616520914294-cgbi...) → Android 앱에서 사용
- 둘은 용도가 달라서 서로 바꾸면 안 됨
unity에서 WebClientId = "616520914294-cgbibs5bt0t….” 안드로이드 id를 넣으면 안됨.
- GoogleSignIn Unity SDK는 Android OAuth 클라이언트 ID가 아니라, 웹 애플리케이션 OAuth 클라이언트 ID를 사용해서 ID Token을 발급받습니다.
- FirebaseAuth에서 GoogleAuthProvider.GetCredential(googleUser.IdToken, null)을 사용할 때 이 ID Token은 웹 클라이언트 ID를 기준으로 발급되어야 정상 인증됩니다.
- 안드로이드 ID를 넣으면 로그인 창은 뜨지만 Firebase 인증 단계에서 Firebase sign-in failed 오류가 납니다.
5. 최종 결과 구글 로그인 성공!!
- Google 로그인 UI 정상 표시
- Firebase Auth 연동 성공
- 로그 뷰어로 Sign-In 응답 값 확인 가능


6. 참고사항
1️⃣ API 적용하려면 새로운 프로젝트에서 테스트 후 진행
처음에는 기존 프로젝트에 바로 진행했었으나 생각지도 못한 다양한 에러들이 발생하고,
기존 코드 및 설정들의 충돌로 너무 많은 시간을 소모하게 된다.(알고 싶지 않았다..)
2️⃣ 뭔가 꼬였거나 이상하면 차라리 새롭게 시작
여러 설정들을 만지다가 본인도 기억 못할 설정으로 모든게 이상졌을 수 있다.
본인도 3번은 다시 만들어서 했었다
3️⃣ 뭔가 이상한 에러면 Library폴더 삭제
4️⃣ 블루스택(안드로이드 앱플레이어)로도 충분히 테스트 가능
빌드 후 생기는 에러들이 단순 블루스택과 같은 안드로이드 앱플레이어 문제거나 다른 에러가 발생할거라고 추측했었으나
안드로이드폰에 직접 빌드파일 넣어도 에러로그는 동일한 내용을 확인함.
블루스택 환경이 문제인가 싶어서 이전에 사용하던 갤럭시로 Build And Run 해봤지만 같은 에러 발생.
5️⃣하나의 AI만 사용하지 말자
gpt, perplexity, gemini 등 다양하게 활용하자.
초반에 gpt만 사용했다가, 어느 순간 답변이 이상해서, perplexity도 사용했다가, 이것도 판단이 이상할 때가 있어서 gemini까지 사용했었다.
AI를 신뢰하기보다 AI를 통해 추측되는 원인과 해결방법을 구글링 등으로 비교해보면서 진행해야 확실해진다.
6️⃣JDK, 앱 빌드 API, 등 설정해도 에러면 호환버전을 다시 확인
‼️ 중요 ‼️Unity 및 API들은 각 버전에 따라 호완이 엄청나게 다르다.
그동안 시도했던 버전
- Firebase Auth Unity 패키지: FirebaseAuth_12.10.1
- Google Sign-In 플러그인: google-signin-plugin-1.0.4
당연히 최신것을 사용해야 되는 줄 알고 최신버전으로 2~3주간 다양한 에러들과의 씨름을 하고 있었는데
특정 에러만 반복적으로 발생했다.
안드로이드 API 36으로 빌드하라고 했는데, API 36을 깔았더니 현재 unity 버전에서는 사용되지 않는 다는 에러 발생,
현재 unity 버전에 맞게 API 32로 낮춰서 빌드하면 에러 발생,
JDK 경로 설정 등 정말 다양한 방법들을 시도했었다가
이전 회사에서 버전의 호환성이 중요하다는 것이 생각났다.
버전 호환성에 맞게 검색해본 결과
- Firebase Auth Unity 패키지: FirebaseAuth_11.6.0
- Google Sign-In 플러그인: google-signin-plugin-1.0.4
12.10.1과 11.6.0는 생각보다 큰 차이다.
만약 에러가 발생한다면,
에러에 대응하는 것 보다 근본적으로 버전의 호환성을 체크해보는게 시간 절약과 스트레스를 줄이는 가장 큰 방법일 것이다.