Unity/Unity Cloud(UGS)

[Unity] UGS - Player Authentication

달시_Dalsi 2024. 10. 15. 00:16

사용자 인증이란?

사용자 인증은 애플리케이션이나 게임에서 사용자의 신원을 확인하고, 특정 기능이나 서비스를 이용할 수 있도록 하는 과정입니다. Unity UGS에서는 사용자가 안전하게 로그인하고, 세션을 관리할 수 있도록 돕는 다양한 인증 방식을 제공합니다. 익명 로그인, 이메일 및 비밀번호 인증 등이 포함됩니다.

 

Unity 서비스 활성화하기

  1. Unity Dashboard에 로그인한 후, 원하는 프로젝트를 선택합니다.
  2. Services 메뉴에서 Player Authentication을 활성화합니다. 

 

패키지 설치하기

  1. Window 메뉴에서 Package Manager를 선택합니다.
  2. Add package from git URL을 클릭한 후, com.unity.services.authentication을 입력하여 설치합니다.
    혹은 Authentication을 검색하여 설치합니다.

 

익명 로그인 방법

1. 익명 로그인 코드 작성하기

using Unity.Services.Authentication;
using Unity.Services.Core;
using System.Threading.Tasks;
using UnityEngine;

public class AuthenticationManager : MonoBehaviour
{
    async void Start()
    {
        // Unity Game Services 초기화
        await UnityServices.InitializeAsync();
        Debug.Log("Unity Services Initialized");

        // 익명 로그인 시도
        await SignInAnonymouslyAsync();
    }

    async Task SignInAnonymouslyAsync()
    {
        try
        {
            // 익명 로그인 시도
            await AuthenticationService.Instance.SignInAnonymouslyAsync();
            Debug.Log("익명 로그인 성공!");

            // PlayerID 가져오는 방법
            Debug.Log($"PlayerID: {AuthenticationService.Instance.PlayerId}");

        }
        catch (AuthenticationException ex)
        {
            // AuthenticationErrorCodes와 에러 코드 비교
            // 적절한 오류 메시지를 플레이어에게 알림
            Debug.LogException(ex);
        }
        catch (RequestFailedException ex)
        {
            // CommonErrorCodes와 에러 코드 비교
            // 적절한 오류 메시지를 플레이어에게 알림
            Debug.LogException(ex);
        }
    }
}

 

2. 익명 인증 테스트하기

위의 코드를 작성한 후, Unity 에디터에서 프로젝트를 실행하여 인증 과정이 정상적으로 작동하는지 확인합니다. Unity Console에 아래 사진처럼 글이 나오면 로그인한 ID와 메시지가 나타나면 인증이 성공적으로 완료된 것입니다.

 

사용자 이름 및 비밀번호 로그인 방법

1. 사용자 이름 및 비밀번호 로그인 방법 활성화

ID 제공자 탭에서는 다양한 로그인 방법을 추가할 수 있는 기능이 있습니다. 현재는 Username & Password 방식을 이용하여 플레이어가 쉽게 회원가입을 할 수 있도록 설정하겠습니다. 다른 로그인 방식들은 절차가 복잡하므로 다루지 않겠습니다.


2.
사용자 이름 및 비밀번호 로그인 코드 작성하기

using UnityEngine;
using UnityEngine.UI; // UI 요소를 사용하기 위해 필요
using Unity.Services.Authentication;
using Unity.Services.Core;
using System.Threading.Tasks;

public class UsernamePasswordAuth : MonoBehaviour
{
    public InputField usernameInput; // 사용자 이름 입력 필드
    public InputField passwordInput; // 비밀번호 입력 필드
    public Button loginButton; // 로그인 버튼
    public Button signUpButton; // 회원가입 버튼

    async void Start()
    {
        await UnityServices.InitializeAsync();
        Debug.Log("Unity Services Initialized");

        loginButton.onClick.AddListener(async () => await SignInWithUsernameAndPasswordAsync(usernameInput.text, passwordInput.text));
        signUpButton.onClick.AddListener(async () => await SignUpWithUsernameAndPasswordAsync(usernameInput.text, passwordInput.text));
    }

    // 사용자 이름과 비밀번호를 사용한 로그인 메서드
    async Task SignInWithUsernameAndPasswordAsync(string username, string password)
    {
        try
        {
            await AuthenticationService.Instance.SignUpWithUsernamePasswordAsync(username, password);
            Debug.Log("로그인 성공!");
            Debug.Log($"PlayerID: {AuthenticationService.Instance.PlayerId}");
        }
        catch (AuthenticationException ex)
        {
            Debug.LogError("인증 실패: " + ex.Message);
        }
        catch (RequestFailedException ex)
        {
            Debug.LogError("요청 실패: " + ex.Message);
        }
    }

    // 사용자 이름과 비밀번호로 회원가입 메서드
    async Task SignUpWithUsernameAndPasswordAsync(string username, string password)
    {
        try
        {
            await AuthenticationService.Instance.SignUpWithUsernamePasswordAsync(username, password);
            Debug.Log("회원가입 성공!");
            Debug.Log($"PlayerID: {AuthenticationService.Instance.PlayerId}");
        }
        catch (AuthenticationException ex)
        {
            Debug.LogError("회원가입 실패: " + ex.Message);
        }
        catch (RequestFailedException ex)
        {
            Debug.LogError("요청 실패: " + ex.Message);
        }
    }
}

 

3.  사용자 이름 및 비밀번호 로그인 테스트하기

위의 코드를 작성한 후, Unity 에디터에서 프로젝트를 실행하여 인증 과정이 정상적으로 작동하는지 확인합니다. 
씬 구성은 아래 사진처럼 만들었습니다.


주의 : 비밀번호는 다음과 같은 요구 사항을 충족해야 합니다:

  • 최소 8자 이상
  • 대문자 1개
  • 소문자 1개
  • 숫자 1개
  • 기호(특수 문자) 1개


이제 아이디와 비밀번호를 입력한 후 회원가입 버튼을 누르면, 아래 사진과 같이 회원가입이 성공하며 자동으로 로그인까지 진행됩니다.

 

로그인이 완료되었으므로 프로젝트를 다시 실행한 후 동일한 아이디로 로그인 시도를 하면, 아래 사진처럼 로그인이 성공

하며 PlayerID가 동일함을 확인할 수 있습니다.

 


플레이어 관리

회원가입된 사용자들을 확인하려면 또 다른 서비스인 Player Management를 확인하면 됩니다.

 


마무리

Unity의 사용자 인증 서비스 중 익명 로그인과 Username & Password 방식을 이용한 회원가입 및 로그인 과정을 알아봤습니다. 프로젝트에서 사용자 인증을 손쉽게 구현할 수 있으며, 이를 기반으로 UGS의 다양한 기능을 적용시킬 수 있습니다.

'Unity > Unity Cloud(UGS)' 카테고리의 다른 글

[Unity] UGS - Asset Manager  (1) 2024.10.26
[Unity] UGS - Cloud Code  (0) 2024.10.25
[Unity] UGS - Cloud Save  (0) 2024.10.24
[Unity] UGS - Remote Config  (0) 2024.10.23
[Unity] 유니티 클라우드 - 충돌 보고서(Cloud Diagnostics)  (0) 2024.05.09