새소식

Unity/이론 | 로직 | 연습

[Unity/Theory] 구글 플레이와 연동하여 기능을 구현하자! (로그인)

  • -

!!! NOTICE !!!
이 글은 유니티의 이론을 다루고 있습니다!
학습한 정보를 제가 기억하고 추후에도 사용해두기 위해 기록해둔 내용입니다!
이 점 유의하고 봐주세요!

지난 글에서는
유니티 프로젝트를 Google Play Console에 등록하기까지
다뤄보았다.

이번에는 실제로
게임을 구글 플레이에 로그인 해보도록 하자.


구글 플레이 로그인하기

지난번 글에서 등록했던 게임의 세부정보를 다시 들어가보면
세부정보 최하단에서 OAuth2 클라이언트 ID를 얻을 수 있습니다.

이번에 이 클라이언트 ID를 사용할 터이니 복사해두세요.

 

왼쪽 메뉴에서 리더보드를 클릭해주세요.

리더보드 메뉴

유니티에서 사용할 리소스가 필요한데
이를 위해서 리더보드를 추가해줄 것입니다.

리더보드 추가 버튼을 눌러주세요.

리더보드 생성 화면

지금은 간단하게 리더보드를 생성만 해주고
리소스만 사용할 것입니다.

리더보드에 사용할 이름을 입력하고 저장해주세요.
필자의 경우, leaderBoard 라고 입력했습니다.

생성된 리더보드

그럼 다음과 같은 화면을 볼 수 있습니다.

우리는 리소스를 위해서 리더보드를 생성했습니다.
리소스 받기 버튼을 클릭해주세요.

리소스

해당 코드가 유니티 프로젝트에 사용하게 될 리소스 코드입니다.
이후에 사용할 터이니 복사해두세요.

 

단계를 진행하기 전에,
UnityPackage 하나를 설치하겠습니다.

Google Play 스토어에 로그인하기 위해
사용하게 될 에셋으로, 아래 링크에서 다운받을 수 있습니다.

https://github.com/playgameservices/play-games-plugin-for-unity

 

playgameservices/play-games-plugin-for-unity

Google Play Games plugin for Unity. Contribute to playgameservices/play-games-plugin-for-unity development by creating an account on GitHub.

github.com

깃허브 링크에서 current-build 폴더 내부에
GooglePlayGamesPlugin-0.10.11.unitypackage 파일을 다운받아
본인의 프로젝트에 임포트해주세요.

 

임포트가 끝났다면 해당 에셋을 Setup 해주겠습니다.
아래 사진을 참조하여 Android Setup 기능을 실행해주세요.

Android Setup

여기에 우리가 초반에 복사해두었던
리소스 코드와 클라이언트 ID를 사용할 것입니다.

1번에 리소스 코드,
2번에 클라이언트 ID를 붙여넣기 해주세요.

이후 Setup 버튼을 클릭해주시면
성공적으로 구글 플레이에 연동할 값들을 입력해줄 수 있습니다.

 

이제 실제로 로그인이 되는지 확인해보겠습니다.
이번에 테스트를 위해서 버튼을 두개 준비해두었습니다.

하나는 로그인을 실행하는 버튼,
하나는 로그아웃을 실행하는 버튼입니다.

마지막으로 로그인이 됬는지 여부를 확인하기 위해
Text 도 하나 소환하였지만,
귀찮아서 콘솔로 확인하겠습니다.

실제 앱에서는 상단에 Play Login 됬다는 팝업이 등장합니다.

이제 스크립트를 작성해봅시다.

Google Play API를 사용하려면
GooglePlayGames 를 참조해야 합니다.

using GooglePlayGames;
using GooglePlayGames.BasicApi;

로그인을 하기에 앞서
PlayGamesPlatform 인스턴스를 새로 만들어 활성화 해주어야 합니다.

이는 새로 게임을 실행했을때
Google Play API를 사용하기 위한 여러저런 데이터를
초기화해주는 역할입니다.

    //초기화 함수. 인스턴스를 만드는 역할.
PlayGamesPlatform.InitializeInstance(new PlayGamesClientConfiguration.Builder().Build());
    //디버그용 변수
PlayGamesPlatform.DebugLogEnabled = true;
    //구글 관련 서비스 활성화.
PlayGamesPlatform.Activate();

로그인을 하기 위해선
로컬에 연결된 계정이 인증되었는지 확인하고
안됬다면 인증 단계에 진입합니다.

        if(!Social.localUser.authenticated) //현재 기기와 연결된 계정이 인증이 아직 안됬는가?
        {
            //계정 인증
            Social.localUser.Authenticate((bool isSuccess) =>
            {
                if(isSuccess)
                {
                    Debug.Log("인증 성공 -> " + Social.localUser.userName);
                }
                else
                {
                    Debug.Log("인증 실패");
                }
            }
            );
        }

로그아웃을 하기 위해선
간단하게 SignOut() 으로 최근 연결된 계정의 로그아웃을 진행합니다.

        //로그아웃
        ((PlayGamesPlatform)Social.Active).SignOut();

아래는 코드 전체입니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GooglePlayGames;
using GooglePlayGames.BasicApi;

public class GooglePlayLoginSample : MonoBehaviour
{
    private void Awake()
    {
        //초기화 함수. 인스턴스를 만드는 역할.
        PlayGamesPlatform.InitializeInstance(new PlayGamesClientConfiguration.Builder().Build());
        //디버그용 변수
        PlayGamesPlatform.DebugLogEnabled = true;
        //구글 관련 서비스 활성화.
        PlayGamesPlatform.Activate();
    }

    public void Do_Login()
    {
        if(!Social.localUser.authenticated) //현재 기기와 연결된 계정이 인증이 아직 안됬는가?
        {
            //계정 인증
            Social.localUser.Authenticate((bool isSuccess) =>
            {
                if(isSuccess)
                {
                    Debug.Log("인증 성공 -> " + Social.localUser.userName);
                }
                else
                {
                    Debug.Log("인증 실패");
                }
            }
            );
        }
    }

    public void Do_Logout()
    {
        //로그아웃
        ((PlayGamesPlatform)Social.Active).SignOut();
    }
}

 

이후 버튼에 함수를 연결해서 실제로 작동되는지 확인해보겠습니다.

유니티 에디터에서 실행하니 인증에 실패했습니다.
아마 직접적으로 연결한 구글 계정이 없어서 그런 것 같습니다.

그럼 테스트를 위해서 APK 파일로 빌드해
제 핸드폰에서 실행해보겠습니다만, 그 이전에

테스트용 계정으로 제 계정을 등록하겠습니다.

 

Google Play Console로 돌아옵니다.

왼쪽에 테스트 메뉴에 들어가면
테스트 메뉴를 확인할 수 있습니다.

이곳에서 테스트용 계정을 등록하고
해당 계정으로 테스트를 해볼 수 있습니다.

다만, 게임 출시 이후에 해당 테스트 계정을
출시판에 사용할 수 없습니다.
만약 사용하고 싶다면, 테스터에서 제거해주어야 합니다.

 

그럼 APK로 빌드 후, 스마트폰에 설치해 실행해보겠습니다.
참고로 테스트한 기기는 갤럭시 S10 5G 입니다.

로그인을 시도해본 결과,ㅇ
성공적으로 로그인을 할 수 있었습니다.

로그아웃을 누른 후에, 로그인을 다시 시도해본 결과,
로그인할 계정을 선택할 수 있도록 메뉴가 출력되었고,
선택한 이후로는 성곡적으로 로그인이 가능했습니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.