Unity에서 Google Play 게임 로그인을 사용한 PlayFab 인증 설정
필수 조건
- Unity 게임 엔진을 사용하여 빌드된 프로젝트
- Google 개발자 계정
- PlayFab에서 게임 타이틀에 액세스할 수 있는 PlayFab 개발자 계정
- PlayFab Unity 편집기 확장 및 Unity SDK
- Google Play 게임 SDK
- 로그인 기본 사항 및 모범 사례에 대한 지식
시작하기
먼저 Google Play에 기본 사항을 설정하는 것부터 시작합니다. 이러한 작업 중 일부를 수행하는 방법에 대한 몇 가지 좋은 가이드가 있으므로 쓸데없이 시간을 낭비하지 않을 수 있습니다.
애플리케이션 만들기 - 애플리케이션을 만들지 않은 경우 Google Play 개발자 콘솔에서 만들어야 합니다.
게임 AAB를 빌드하고 내부 테스트를 위해 업로드합니다. 앱을 내부 테스트 트랙으로 릴리스하는 방법에 대한 이 가이드를 따를 수 있습니다. 서명 프로세스 중에 앱 번들에 대해 이 목적을 위해 고유한 키 저장소를 사용해야 한다는 점을 고려하세요. 키 저장소를 만드는 방법은 이 문서를 참조하세요.
Google Play Games Services 페이지의 지침에 따라 Google Play Games 서비스를 설정합니다.
Google Play Games SDK를 다운로드하여 설치합니다.
PlayFab Unity SDK를 설치합니다(방법을 모르는 경우에는 Unity3D 빠른 시작 가이드를 따르세요).
Google Play 게임 구성
Google Play 게임 SDK와 함께 설치된 도구 집합에서 Google Play 게임을 구성할 수 있습니다. 다음 작업을 통해 이러한 도구에 액세스할 수 있습니다.
창 탭으로 이동합니다.
Google Play 게임을 선택합니다.
설정으로 이동합니다.
그런 다음 Android 설정에 액세스합니다.
Android 구성 창이 표시되면 이 화면에서 리소스 정의 및 웹 응용 프로그램 클라이언트 ID를 입력해야 합니다.
리소스 정의 가져오기
- 다음 단계에 따라 Android 리소스 정의를 가져옵니다.
웹 응용 프로그램 클라이언트 ID 가져오기
Google 로그인이 PlayFab에서 작동하도록 하려면 "웹 애플리케이션" 유형에 대한 OAuth 클라이언트 ID 자격 증명을 만들어 얻을 수 있는 웹 클라이언트 ID를 사용해야 합니다.
OAuth 클라이언트 ID를 만들기 전에 다음 단계에 따라 찾을 수 있는 PlayFab API 엔드포인트를 알아야 합니다.
게임 관리자에 로그인합니다.
타이틀을 선택합니다.
타이틀 이름 옆에 있는 톱니바퀴 아이콘 을 클릭하여 타이틀 설정으로 이동하고 타이틀 설정을 선택합니다.
API 기능 탭을 선택합니다.
API 엔드포인트 필드에 복사합니다.
타이틀 API 엔드포인트를 알게 되었으므로 OAuth 클라이언트 ID 자격 증명을 만들기 위해 여기에 설명된 단계를 따르세요.
클라이언트 ID를 만들 때 클라이언트 ID에 대한 권한 있는 JavaScript 원본으로 API 엔드포인트를 추가해야 합니다.
또한 사용자 고유의 애플리케이션 리디렉션 URI를 권한 있는 리디렉션 URI로 추가해야 합니다. 이 단계를 수행하지 않으면 불일치 redirect_uri 오류가 발생합니다.
클라이언트 ID를 만든 후에는 생성된 클라이언트 ID 문자열과 클라이언트 암호가 표시되는 다음과 유사한 화면이 표시됩니다.
이제 Unity의 Android 구성 창으로 돌아가서 클라이언트 ID 텍스트 상자에 클라이언트 ID를 붙여넣을 수 있습니다.
이제 두 값이 모두 채워지게 되었으므로 설치를 선택할 수 있습니다.
PlayFab Google 로그인 설정
PlayFab에는 자체 Google 로그인 설정 프로세스가 있습니다. PlayFab 개발자 계정에서 이 설정을 수행할 수 있습니다. 계정이 없는 경우 무료 개발자 계정에 등록할 수 있습니다.
PlayFab에서 Google을 설정하는 방법:
- 대시보드에서 추가 기능 섹션으로 이동합니다.
- Google 추가 기능으로 이동합니다.
- 여기에서 Google 설치 단추를 선택합니다.
이 양식에 입력해야 할 몇 가지 사항이 있습니다.
-
Google 앱 패키지 ID - 이 필드는 Android 패키지의 이름입니다. 예를 들어, 샘플에서는
com.playfab.gpgexample
을 사용합니다. - Google 앱 라이선스 키 - 이 필드는 필요하지만 Google 로그인과는 관련이 없습니다. 이 필드는 영수증 유효성 검사 API를 사용하여 영수증 유효성 검사를 설정하기 위한 필드입니다.
참고 항목
이 라이선스 키는 앱으로 이동하여 수익 창출 섹션에 있는 Google 개발자 콘솔에서 얻을 수 있습니다. 수익 창출 설정 섹션을 클릭합니다. 여기에서 라이선스 텍스트 상자가 표시될 때까지 아래로 스크롤하여 Base64로 인코딩된 RSA 공개 키를 복사하여 이 필드에 붙여 넣습니다.
- Google OAuth 클라이언트 ID - Unity의 Google Play Games SDK 설정에서 사용한 웹 클라이언트 ID입니다.
- Google OAuth 클라이언트 암호 - OAuth 클라이언트 ID를 만들 때 얻은 비밀 키입니다.
- 서비스 계정 키 - 이 필드에는 서비스 계정 키 JSON 문자열이 필요합니다. 다음 단계에 따라 서비스 계정 키를 만들어야 합니다. 그런 다음 여기에 있는 단계에 따라 해당 서비스 계정에 대한 자격 증명을 만듭니다. 자격 증명 JSON 파일을 받은 후 이 필드에 전체 JSON 콘텐츠를 붙여 넣습니다.
추가 기능 구성은 저장하기 전에 다음과 같이 표시됩니다.
팁
반드시 설정을 저장하세요!
Unity 게임에 Google 로그인 추가
Google 로그인 기능을 작동시키는 데 필요한 코드는 아주 적습니다. 시작(또는 앱을 초기화하거나 시작하는 모든 위치)에 넣을 초기화 코드가 있습니다.
이 코드는 게임이나 앱의 아키텍처와 프레임워크에 따라 다른 위치에 있을 수 있습니다. 어떤 경우에도 아래 코드는 Google Play Games를 초기화합니다.
참고 항목
Google Play 게임 SDK를 사용할 수 있도록 Using 문을 잊어버리지 ‘않아야’ 합니다.
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;
public class PFGoogleSignInUnity : MonoBehaviour
{
void Start()
{
PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
}
internal void ProcessAuthentication(SignInStatus status)
{
if (status == SignInStatus.Success)
{
PlayGamesPlatform.Instance.RequestServerSideAccess(false, ProcessServerAuthCode);
}
}
private void ProcessServerAuthCode(string serverAuthCode)
{
Debug.Log("Server Auth Code: " + serverAuthCode);
var request = new LoginWithGooglePlayGamesServicesRequest
{
ServerAuthCode = serverAuthCode,
CreateAccount = true,
TitleId = PlayFabSettings.TitleId
};
PlayFabClientAPI.LoginWithGooglePlayGamesServices(request, OnLoginWithGooglePlayGamesServicesSuccess, OnLoginWithGooglePlayGamesServicesFailure);
}
private void OnLoginWithGooglePlayGamesServicesSuccess(LoginResult result)
{
Debug.Log("PF Login Success LoginWithGooglePlayGamesServices");
}
private void OnLoginWithGooglePlayGamesServicesFailure(PlayFabError error)
{
Debug.Log("PF Login Failure LoginWithGooglePlayGamesServices: " + error.GenerateErrorReport());
}
}
정확히 무슨 일이 일어나고 있는지 분석해 보겠습니다.
- 먼저
PlayGamesPlatform.Instance.Authenticate
로 로그인합니다. 이 함수는 결과를 처리하는 매개 변수로 콜백 함수를 수신하고 사용자가 수신한 SignInStatus에 따라 성공적으로 로그인할 수 있었는지 알려 줍니다. - 앱에 테스트 계정을 추가하지 않으면 테스트할 때 콜백 SignInStatus 결과는 항상 취소됩니다. 이 문제가 발생하는 경우 이 가이드의 단계에 따라 Google 애플리케이션에 테스터를 추가합니다.
참고 항목
PlayGamesPlatform.Instance.Authenticate
호출은 Google Play Games 로그인 대화 상자가 팝업되도록 트리거합니다.
다음으로, 로그인에 성공하면
PlayGamesPlatform.Instance.RequestServerSideAccess
를 호출합니다. 이 호출은 다른 콜백을 수신하고 ServerAuthCode 문자열을 반환합니다.그런 다음
PlayFabClientAPI.LoginWithGooglePlayGamesServices
를 호출하여 Google에서 방금 받은AuthCode
를ServerAuthCode
매개 변수로 전달합니다.마지막으로
LoginWithGooglePlayGamesServices
호출 결과에 따라OnLoginWithGooglePlayGamesServicesSuccess
또는OnLoginWithGooglePlayGamesServicesFailure
가 호출되는 경우 이러한 콜백은 PlayFab에 대한 로그인 작업 결과를 처리하는 콜백입니다. 이 시점에서 대시보드에 성공적으로 로그인되어야 합니다!
이 가이드가 도움이 되었기를 바랍니다. 질문이 있으시면 커뮤니티 포럼에서 자유롭게 질문하세요.