소소한 개발 공부

GPGS(Google Play Game Service)를 내 게임과 연동해 로그인하기 본문

개발/Unity

GPGS(Google Play Game Service)를 내 게임과 연동해 로그인하기

이내내 2022. 1. 6. 16:55

모바일 게임에 구글 로그인 기능을 넣고 싶었는데 레퍼런스를 찾고 그대로 해봐도 자꾸 Fail이 났다. 가장 최근 버전 레퍼런스를 통해 해결..!

 

참고 영상

https://www.youtube.com/watch?v=aCG5nixgyVw

 

1. 구글 개발자 계정 만들기 및 앱 만들기

아래 사이트에서 소정의 금액을 지불해 구글 개발자 계정을 만든다.

https://developer.android.com/distribute/console?hl=ko 

 

개발자 계정으로 로그인하면 "앱 만들기" 버튼이 있다. 클릭한다.

(만든 앱이 없을 때는 화면이 조금 달랐던 것 같은데 "앱 만들기" 버튼을 동일하게 클릭하면 된다.)

 

작성을 완료했다면 오른쪽 하단의 파란색 "앱 만들기" 버튼을 클릭한다.

 

위와 같은 화면이 나온다. 

프로덕션 혹은 테스트에서 버전을 만든다. 여기에 유니티 빌드 파일을 올려줄 것이다.

출시명 및 출시 노트(필수 아님)를 작성한다. App Bundle에는 abb 확장자의 빌드 파일을 넣어야 한다. 이제 유니티를 봐보자.

 

2. 유니티 빌드

구글 플러그인 패키지를 임포트한다. 아래 사이트에서 current-build 폴더에 들어있는 패키지를 다운로드 후 프로젝트에 임포트한다.

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

 

import는 Assets->import package -> custum package로 외부 패키지를 임포트한다.

빌드 플랫폼을 안드로이드로 변경한다.

File->build Settings->Android ->Switch Platform

Enable Android Auto-resolution 창이 뜨는데 Enable 해준다.

Dependency 업데이트가 끝나면

PlayerSettings..->Player 탭에서 우선 CompanyName을 바꿔주고

 

other settings란의 Target API Level을 Android 11.0(API level 30), minimum api는 그와 비슷하게 해주고(너무 낮은 레벨은 target api level 때문에 빌드가 안되는 것 같다),

Scrpting Backend 를 IL2CPP, API Compatibility level 은 .NET 4.x

ARM64 체크하고

 

Publishing Settings 란에서 KeyStore Manager를 클릭한다.

Key를 생성하면 password와 alias, alias password를 작성해 key를 추가한다.(에디터를 껐다키면 key의 password가 초기화되는데 이는 publishing settings에서 password를 재입력해서 사용한다.)

 

이제 project setting이 끝났다. 다시 build setting으로 돌아가 Build App Bundle(Google Play)를 체크해 빌드 확장자를 aab로 바꾸고 Build버튼을 누른다.

 

빌드한 aab 파일을 방금 하다 만 콘솔 버전 업로드에 넣으면 된다.

이제 버전을 저장한다.

3. GPGS 설정

버전을 업로드하면 인증서 지문을 얻을 수 있다.

설정->앱 무결성에서 앱서명 키 인증서의 SHA-1 코드와 업로드 키 인증서의 SHA-1 코드를 얻을 수 있다. 

앱 서명 키 인증서는 실제 플레이스토어에 올라가 사용되는 키 이고

업로드 키 인증서는 테스트용으로 사용하는 키이다.

 

성장->Play 게임즈 서비스->설정을 들어가면 다음과 같은 세 선택지가 나오는데 가운데 선택지를 선택하고 오른쪽 하단 만들기 버튼을 클릭한다. Google Play Game Service 프로젝트가 생성된다.

 

먼저 OAuth 동의 화면을 구성해야 한다.

사용자 인증 정보에 파란색 글씨 설정을 클릭하면 OAuth동의 화면 구성 팝업이 뜨는데 이 팝업의 파란 글씨로 쓰인 Google Cloud Platform을 클릭한다.

"외부"로 선택하고 만들기를 클릭한다.

 

앱 이름, 사용자 지원 이메일 그리고 밑에 개발자 연락처 정보를 기입한다.

다음으로 2번 범위, 3번 테스트 사용자가 나오는데 이 단계는 기입하지 않고 밑에 저장 후 계속 버튼을 눌러 진행한다.(작성할 게 있다면 작성)

 

완료 후 다시 콘솔로 돌아가 아까 팝업창에서 파란 구성확인 버튼을 클릭한다.

그럼 이 화면이 나오는데 먼저 게임 서버를 만들어준다.

속성에서 오른쪽에 속성 수정을 클릭한다.

게임 카테고리, 게임 아이콘, 게임 그래픽 등 작성해 주고 변경사항 저장

다시 설정으로 돌아와서 사용자 인증 정보 추가를 클릭한다.

유형은 게임 서버로 하고 OAuth클라이언트를 만들어줘야한다.

OAuth클라이언트 만들기를 클릭하면 아까처럼 팝업창이 뜨는데 이때 파란 글씨의 "OAuth클라이언트 만들기"를 클릭한다.

팝업에 나온대로 애플리케이션 유형과 이름을 지정해주고 만들기를 클릭한다.

이제 생성된 OAuth클라이언트를 콘솔 설정에 지정해준다. 그리고 변경사항 저장.

 

다시 설정으로 돌아가서 다시 한번 사용자 인증정보 추가 버튼 클릭

이번엔 유형을 안드로이드로 한다. 두번 해줄 것이다. 하나는 앱 서명 키 인증서 용으로 하나는 업로드 키 인증서 용으로

"OAuth클라이언트 만들기" 클릭 후 팝업창에 나온대로 OAuth 클라이언트 ID를 만들어준다.

처음 클라이언트 만들기로 Android OAuth클라이언트를 만들때는 팝업창에 SHA-1 키가 나오는데 이는 앱 서명 키이고 두번째로 만들 때 나오는 클라이언트 만들기 팝업에는 SHA-1키가 나오지 않기 때문에 업로드 키 지문을 복사해 클라이언트 ID를 생성할 때 붙여넣기 한다.

 

이제 Google Cloud Platform-OAuth 동의 화면에서 게시 상태 - 테스트 - 앱게시 버튼을 클릭한다.

 

유니티와 연결해줄 차례다.

콘솔 설정에서 리소스 보기 버튼을 클릭해 나오는 팝업창에서 리소스를 복사 해 

위처럼 나온 창에 리소스 부분에 붙여넣는다. 그리고 Client ID에는 아까 만든 게임 서버의 클라이언트ID를 넣고 Setup 버튼을 누른다. Success 팝업이 두 개 뜨면 성공이다.

 

이제 스크립트를 추가해 로그인을 구현한다.

더보기

GooglePlayManager.cs

씬 내에 Login 버튼과 Logout 버튼을 두어 OnClick 메서드를 연결한다.

using UnityEngine;
// 구글 플레이 연동
using GooglePlayGames;
using GooglePlayGames.BasicApi;
 
public class GooglePlayManager : MonoBehaviour
{
    void Awake()
    {
        var config = new PlayGamesClientConfiguration.Builder().Build();
        PlayGamesPlatform.InitializeInstance(config);
        PlayGamesPlatform.DebugLogEnabled = true;
        PlayGamesPlatform.Activate();
    }
    public void OnClickLogin()
    {
        if (!Social.localUser.authenticated)
        {
            Social.localUser.Authenticate(success => {
                if (success)
                {
                    Debug.Log("Authentication successful");
                    string userInfo = "Username: " + Social.localUser.userName +
                        "\nUser ID: " + Social.localUser.id +
                        "\nIsUnderage: " + Social.localUser.underage;
                    Debug.Log(userInfo);
                }
                else
                    Debug.Log("Authentication failed");
            });
        }
    }
 
    public void OnClickLogOut()
    {
        ((PlayGamesPlatform)Social.Active).SignOut();
        Debug.Log("Logout");
    }
}

안드로이드 스튜디오 에뮬레이터로 실행해보기로 한다. 형광펜 표시해둔 곳처럼 Run Device를 에뮬레이터로 바꾸고 Build And Run하면 에뮬레이터에서 돌아가는 것을 확인할 수 있다.