본문 바로가기
유니티

Day 58 - 유니티 구글 계정 로그인 시스템 구축(1부)

by shin0707 2024. 12. 14.
728x90

 

  • 주제

>>  구글 클라우드 플랫폼(GCP) 설정

>>  Firebase로 구글 로그인 지원 추가( + Firebase 무료 사용 범위)

>>  유니티 프로젝트에서 구글 로그인 구현


  • 공부내용

유니티에서 무료로 구글 계정 로그인 시스템을 구현하면 사용자의 계정을 인증하고 데이터를 연동하는 데 활용할 수 있다. 이번 게시글에서는 유니티 프로젝트에서 구글 계정 로그인을 설정하고, 실행하기 위한 기본적인 환경 구축을 다룬다.

 

1. 구글 클라우드 플랫폼(GCP) 설정

구글 계정 로그인을 구현하려면 먼저 **구글 클라우드 플랫폼(GCP)**에서 OAuth 2.0 클라이언트를 설정해야 한다.

 

1-1.  프로젝트 생성

 

  • Google Cloud Console로 이동해 로그인한다.
  • 새 프로젝트를 생성한다.
    • 프로젝트 이름을 입력한다.
    • 위치는 기본값으로 둔다.
    • 프로젝트 생성 버튼을 클릭한다.

 

1-2. OAuth 동의 화면 설정

 

  • API 및 서비스 > OAuth 동의 화면으로 이동한다.
  • 사용자 유형을 "외부"로 선택하고 만들기를 클릭한다.
  • 애플리케이션 이름, 이메일 주소 등을 입력하고 저장한다.

 

1-3. OAuth 2.0 클라이언트 ID 생성

 

  • API 및 서비스 > 사용자 인증 정보로 이동한다.
  • 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 선택한다.
  • 응용프로그램 유형을 "웹 애플리케이션"으로 선택한다.
  • 승인된 리디렉션 URI에 https://localhost와 같은 값을 추가한다.
  • 클라이언트 ID와 클라이언트 비밀번호를 생성해 저장한다.

 

 

 

2. Firebase로 구글 로그인 지원 추가

유니티에서 구글 로그인을 쉽게 사용하려면 Firebase SDK를 활용하는 것이 편리하다.


Firebase 무료 사용 범위(Spart 요금제)

 

  • Authentication (인증)
    • 이메일/비밀번호, Google, Facebook 등 다양한 인증 방법 제공
    • 10,000명 사용자당 월 무료
  • Firestore (Cloud Firestore 데이터베이스)
    • 50,000회 읽기
    • 50,000회 쓰기
    • 1GB 스토리지
  • Realtime Database
    • 1GB 데이터베이스 저장소
    • 50,000회 쓰기/읽기
  • Cloud Functions
    • 200만 호출
    • 400,000GB/초 처리 시간 무료
  • Hosting
    • 1GB 저장소 및 10GB 전송량
  • Cloud Storage
    • 5GB 저장소
    • 50,000회 읽기 및 50,000회 쓰기 요청

 


 

2-1. Firebase 프로젝트 설정

 

  • Firebase Console로 이동해 로그인한다.
  • 새 프로젝트를 생성하고 구글 로그인 기능을 활성화한다.
    • Authentication > Sign-in Method로 이동한다.
    • Google을 활성화하고 저장한다.

 

2-2. Firebase SDK 다운로드 및 설정

 

  • Firebase Unity SDK를 다운로드한다.
  • 유니티 프로젝트에 SDK 패키지를 추가한다.
    • 다운로드한 .unitypackage 파일을 더블 클릭해 유니티에 추가한다.

 

2-3. Google Play Service Resolver 설정

Firebase SDK를 사용하면 Google Play Service Resolver가 포함되어 있다.

  1. Assets > External Dependency Manager > Android Resolver > Force Resolve를 클릭한다.
  2. 필요한 종속성을 자동으로 설치한다.

 

 


 

3. 유니티 프로젝트에서 구글 로그인 구현

3-1. Firebase 초기화

using Firebase;
using Firebase.Auth;
using UnityEngine;

public class FirebaseInit : MonoBehaviour
{
    private FirebaseAuth auth;

    private void Start()
    {
        FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            FirebaseApp app = FirebaseApp.DefaultInstance;
            auth = FirebaseAuth.DefaultInstance;
            Debug.Log("Firebase Initialized");
        });
    }
}

 

 

3-2. 구글 로그인 메서드 추가

FirebaseAuth를 활용해 구글 로그인을 구현한다.

using Firebase.Auth;
using Google;
using UnityEngine;
using System.Collections.Generic;
using System.Threading.Tasks;

public class GoogleLogin : MonoBehaviour
{
    private FirebaseAuth auth;
    private GoogleSignInConfiguration googleConfig;

    private void Start()
    {
        auth = FirebaseAuth.DefaultInstance;

        // Google 로그인 설정
        googleConfig = new GoogleSignInConfiguration
        {
            WebClientId = "your-web-client-id",
            RequestEmail = true,
            RequestIdToken = true
        };
    }

    public void SignInWithGoogle()
    {
        GoogleSignIn.Configuration = googleConfig;
        GoogleSignIn.DefaultInstance.SignIn().ContinueWith(OnGoogleSignIn);
    }

    private void OnGoogleSignIn(Task<GoogleSignInUser> task)
    {
        if (task.IsFaulted)
        {
            Debug.LogError("Google Sign-In Error: " + task.Exception.Message);
        }
        else if (task.IsCanceled)
        {
            Debug.Log("Google Sign-In Canceled");
        }
        else
        {
            Debug.Log("Google Sign-In Success");
            FirebaseGoogleAuth(task.Result.IdToken);
        }
    }

    private void FirebaseGoogleAuth(string idToken)
    {
        Credential credential = GoogleAuthProvider.GetCredential(idToken, null);
        auth.SignInWithCredentialAsync(credential).ContinueWith(task =>
        {
            if (task.IsCanceled || task.IsFaulted)
            {
                Debug.LogError("Firebase Sign-In Failed");
            }
            else
            {
                Debug.Log("Firebase Sign-In Success: " + auth.CurrentUser.DisplayName);
            }
        });
    }
}

이제 구글 로그인 기능이 유니티 프로젝트에 기본적으로 구현되었다.

다음 게시글에서는 구글 로그인 시스템을 실행하고 유저 데이터를 활용하는 방법을 살펴보자.

728x90
반응형