본문 바로가기
유니티

Day 59 - 유니티 구글 계정 로그인 시스템 실행(2부)

by shin0707 2024. 12. 15.
728x90

 

  • 주제

>>  구글 로그인 시스템 실행하기

>>  사용자 데이터 활용

>>  로그아웃 기능 추가

>>  주의사항(API 키 보호, 로그인 실패 처리)


  • 공부내용

앞선 게시글에서 유니티에서 구글 계정 로그인 시스템을 구축하는 방법을 알아보았다.

이번에는 그 시스템을 실행하고 사용자 데이터를 활용하는 방법을 설명한다.

 

1. 구글 로그인 시스템 실행하기

구글 로그인 시스템이 제대로 작동하려면 Unity Editor빌드된 프로젝트에서 각각 실행 시 테스트가 필요하다.

실행 과정은 다음과 같다.

 

1-1. Unity Editor에서 실행

  1. Unity Editor에서 Play 모드를 활성화한다.
  2. Google 로그인 버튼을 클릭하여 로그인 시도.
  3. Debug 로그에서 로그인 성공 또는 실패 메시지를 확인.

 

1-2. 빌드된 프로젝트에서 실행

  1. Android, iOS 또는 Windows 빌드를 생성한다.
  2. 실제 디바이스에서 프로젝트를 실행한다.
  3. 로그인 프로세스를 테스트하고 오류가 없는지 확인한다.

 

2. 사용자 데이터 활용

사용자가 로그인에 성공하면 FirebaseAuth를 통해 사용자 데이터를 얻을 수 있다.

이를 활용해 게임 내에서 맞춤형 사용자 경험을 제공할 수 있다.

 

2-1. 로그인 성공 시 사용자 데이터 확인

아래 코드를 통해 로그인한 사용자 정보를 가져온다.

using Firebase.Auth;
using UnityEngine;

public class UserDataHandler : MonoBehaviour
{
    private FirebaseAuth auth;

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

    public void DisplayUserInfo()
    {
        FirebaseUser user = auth.CurrentUser;

        if (user != null)
        {
            string name = user.DisplayName;
            string email = user.Email;
            string photoUrl = user.PhotoUrl != null ? user.PhotoUrl.ToString() : "No Photo";

            Debug.Log($"Name: {name}\nEmail: {email}\nPhoto URL: {photoUrl}");
        }
        else
        {
            Debug.Log("No user is logged in.");
        }
    }
}

 

2-2. 사용자 프로필 표시

로그인한 사용자 정보를 UI에 표시한다.

예를 들어, TextMeshPro를 활용해 사용자 이름과 이메일을 게임 화면에 띄운다.

using TMPro;
using Firebase.Auth;
using UnityEngine;

public class UserProfileUI : MonoBehaviour
{
    public TextMeshProUGUI userNameText;
    public TextMeshProUGUI userEmailText;

    private FirebaseAuth auth;

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

    private void DisplayUserInfo()
    {
        FirebaseUser user = auth.CurrentUser;

        if (user != null)
        {
            userNameText.text = user.DisplayName;
            userEmailText.text = user.Email;
        }
        else
        {
            userNameText.text = "Guest";
            userEmailText.text = "Not Logged In";
        }
    }
}

 

3. 로그아웃 기능 추가

구글 로그인이 완료되었더라도 로그아웃 기능이 필요하다.

로그아웃을 통해 사용자 데이터를 초기화할 수 있다.

 

3-1. 로그아웃 구현

using Firebase.Auth;
using UnityEngine;

public class LogoutHandler : MonoBehaviour
{
    private FirebaseAuth auth;

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

    public void Logout()
    {
        auth.SignOut();
        Debug.Log("User logged out successfully.");
    }
}

 

3-2. UI와 연결

  1. 유니티 UI 버튼을 생성한다.
  2. 버튼의 OnClick 이벤트에 LogoutHandler.Logout 메서드를 연결한다.

 

4. 주의사항

  1. API 키 보호:
    • WebClient ID는 외부에 노출되지 않도록 주의해야 한다.
    • 프로젝트에 추가된 키는 Git이나 다른 공유 저장소에 업로드하지 않는다.
  2. 로그인 실패 처리:
    • 네트워크 문제나 OAuth 인증 오류 발생 시 사용자가 적절한 메시지를 확인할 수 있도록 예외 처리와 UI 피드백을 추가한다.
728x90
반응형