본문 바로가기

볼봇의 코딩 생활/언리얼한 엔진

[UE4] 구글 플레이 로그인 구현

 

게임 내 사용자를 구분하는건 중요한데 HTTP 웹 서버를 따로 구현해서 인증 서비스를 만들지 않는 이상 쉬운 작업은 아니다. 따라서 이번 포스팅에서는 구글 플레이 게임에 로그인 하는 방법에 대해 알아보겠다.

 

이 과정을 마치면 이후 리더보드나 업적과 같은 구글 플레이 게임에서 제공해주는 기능을 언리얼에서 사용 할 수 있다.

 

결과물

"로그인" 버튼을 누르면 화면처럼 "~님 안녕하세요"가 뜨며 구글 로그인을 할 수 있다.

"로그아웃"을 누른 후 다시 로그인을 누르면 계정을 선택할 수 있다.

아래 업적 부분은 작동은 하지만 아직 연구중인 과제로 이후 포스팅에서 다루도록 하겠다.

 

 

플레이 콘솔에서 게임 생성

 

우선 구글 플레이 콘솔에서 앱을 하나 만든다.

개발 초기에는 그래도 게임 이름이나 설명 정도는 적을 수 있으므로 잘 작성해서 완성하자.

앱을 만들면 위 사진 처럼 앱 목록에 자신이 만든 앱이 보일것이다. 필자는 "네코 퍼즐" 로 만들었다.

 

 

 

앱을 선택해서 들어가면 우측에 "Play 게임 서비스"의 "설정" 탭에 들어간다.

 

 

 

 

두번째 옵션을 선택한다. 

독자 상황에 따라서 다른 옵션을 선택 할 수 있겠지만, 처음 이 작업을 하는 사람은 두번째 옵션이 가장 이상적이다.

이 옵션을 선택하면 새로운 구글 클라우드 플렛폼에 새로운 프로젝트가 만들어진다.

 

 

 

 

우측 상단에 "구글 클라우드 플렛폼에서 보기"를 눌러 이동한다.

OAuth 동의화면을 구성해 주어야 한다.

 

 

클라우드 플랫폼에서 인증정보 생성

 

우측에 "OAuth 동의 화면" 탭을 선택한다.

 

 

 

UserType 부분에서 "외부" 옵션을 선택한다.

둘간의 차이는 직접 해 봐야 알겠지만 로그인 가능한 사용자의 범위를 구글 전체로 할지, 조직 내 사용자로 할지 결정하는것으로 보인다. 다른 의견이 있으면 댓글로 남겨주시길 바랍니다.

 

 

 

앱 이름을 입력한다. 로고를 넣게 되는 경우 구글 승인을 받아야 하므로 기다려야 한다.

필자는 테스트를 위해 앱 로고는 업로드 하지 않았다.

 

승인된 도메인 부분은 웹에서 로그인 할 때 접근 가능한 도메인을 설정하는것으로 아는데,

언리얼 엔진에서 로그인이 진행되므로 의미가 없는듯 하다. (경험상)

 

적당히 홈페이지 링크를 입력해주고, 넘어가도록 하자.

이에 관련해서 다른 의견 있으면 댓글로 남겨주시기 바랍니다.

 

작성을 마치면 "저장"을 누른다.

 

 

 

좌측에 "사용자 인증 정보" 탭을 선택한다.

"사용자 인증 정보 만들기" 버튼을 누른다.

 

 

OAuth 클라이언트 ID 를 선택한다.

 

 

 

여기서 입력에 까다로운 부분이 생길 수 있다고 생각하는데 차근차근 입력 방법에 대해 알아보겠다.

 

 

 

패키지 명 입력하기.

패키지명은 언리얼 엔진의 [프로젝트 설정 -> 안드로이드] 탭에 가보면 쉽게 알 수 있다.

위 필드의 값을 프로젝트 명 설정 규칙에 따라서 적절히 입력한다.

자신의 도메인을 역순으로 입력 (google.com > com.google) 한 후, 프로젝트 명을 입력하는것이 관습이다.

ex) com.google.myapp

 

SHA-1 인증서 디지털 지문 - 출시용

안드로이드 앱을 빌드 할 때는 인증서가 필요하다.

기본적으로 언리얼 엔진은 디버깅용 인증서로 서명을 하게 되는데, 나중에 앱을 업로드 할 때 문제가 발생한다.

따라서, 개인 인증서를 만들 필요가 있다.

 

인증서를 만드는 과정은 안드로이드 개발자 레퍼런스에 자세히 설명되어 있다.

이 기회에 인증서의 역할에 대해 이해하고 넘어가면 이후 안드로이드 플랫폼에서 게임을 개발 할 때 도움이 될 것이다.

 

developer.android.com/studio/publish/app-signing?hl=ko

 

앱 서명  |  Android 개발자  |  Android Developers

앱 서명 및 보안과 관련된 중요한 개념을 알아보고, Android 스튜디오를 사용하여 Google Play에 출시하기 위해 앱에 서명하는 방법과 Google Play 앱 서명을 선택하는 방법을 알아보세요.

developer.android.com

 

이해하기 귀찮은 독자는 바로 생성 과정으로 이동해도 좋다.

developer.android.com/studio/publish/app-signing?hl=ko#sign-apk

 

앱 서명  |  Android 개발자  |  Android Developers

앱 서명 및 보안과 관련된 중요한 개념을 알아보고, Android 스튜디오를 사용하여 Google Play에 출시하기 위해 앱에 서명하는 방법과 Google Play 앱 서명을 선택하는 방법을 알아보세요.

developer.android.com

참고로, 인증서를 만들기 위해서는 "안드로이드 스튜디오" 설치가 필요하다.

언리얼 4.25 사용자는 안드로이드 스튜디오를 반드시 설치해야만 앱을 빌드 할 수 있으므로 설치 해두도록 하자.

설치 과정은 인터넷에 널려 있으므로 생략한다.


SHA-1 인증서 디지털 지문 - 개발용

단순히 구글 플레이 연동을 공부하기 위해서 이 글을 읽고 있다면 굳이 인증서를 만들 필요는 없다.

안드로이드 스튜디오를 설치 했다면 아래 경로에 디버깅 키가 있기 때문에 이를 사용해도 된다.

다만 이후 게임을 출시 할 때는 위 과정을 거쳐 인증서를 만들어야 하고, 디지털 지문 값을 바꿔야만 한다.

그렇지 않으면 로그인이 작동하지 않는다.

 

C:\Users\[UserName]\.android

위 파일이 디버깅용 인증서이다.

연습용으로만 사용하자.


인증서 준비를 마쳤다면, 지문을 얻어보겠다.

명령프롬프트를 연다.

keytool -keystore [인증서 경로] -list -v

참고로, 디버깅용 인증서의 비밀번호는 "android" 이다.

SHA-1 디지털 지문 값을 입력하고 저장한다.

 

 

 

클라이언트 ID 값을 잘 간직한다.

나중에 필요하면 다시 얻을 수 있지만, 복사해두자.

 

 

 

 

구글 플레이에 돌아오면 화면이 바뀌어 있을것이다.

(바뀌지 않았다면 "새로고침" 을 눌러보도록 하자. F5 가 아니라 사용자 인증정보에 "새로고침" 버튼이 있다.)

우측 상단에 "사용자 인증 정보 추가" 버튼을 눌러 이동한다.

 

 

 

 

 

이전에 생성했던 OAuth 클라이언트에 새로운 옵션이 보일 것 이다.

이를 선택 한 후 저장한다.

 

구글 플레이와 클라우드 플랫폼 내 인증 구성을 마쳤다.

이제 언리얼 엔진으로 돌아가 이 설정을 적용한다.

 

언리얼 엔진에 설정 적용

프로젝트 설정 > 안드로이드 탭에 들어가 "Google Play Service"를 찾는다.

 

Google Play 지원 활성화 True (체크)
게임 앱 ID
Google Play 라이선스 키

인증 정보 설정 과정에서 얻은 ID 와 OAuth 클라이언트 값을 엔진에 입력 한다.

구글 플레이 지원 활성화를 반드시 활성화 해야만 작동하므로 이를 확실히 해두자.

 

참고로, 필자의 사진 아래 업적 부분은 무시해도 된다.

현재 업적 관련 조사를 하고 있기 때문이다.

 

 

 

로그인 구현

새로운 Pawn 을 만들어서 (다른 클래스 해도 좋다.) 위와같이 함수를 작성했다.

OnReqLogin 이벤트는 사용자가 로그인 버튼을 눌렀을 때 호출되도록 구성 했고, 독자의 경우 BeginPlay 에 연결하면

무리 없이 테스트 할 수 있다.

 

중요한 함수는 Show External Login UI 이다.

위 함수를 호출하면 해당 플랫폼에 맞는 로그인을 진행 할 수 있다.

 

docs.unrealengine.com/en-US/BlueprintAPI/Online/ShowExternalLoginUI/index.html

 

Show External Login UI

Show External Login UI

docs.unrealengine.com

 

로그아웃 구현

로그아웃을 구현했다.

Logout 을 호출하면 자동으로 로그아웃이 된다.

 

docs.unrealengine.com/en-US/BlueprintAPI/Online/Logout/index.html

 

Logout

Logout

docs.unrealengine.com

 

실행 결과

필자가 UI 는 대충 작성했다.

로그인 버튼을 누르면 위 사진 처럼 로그인이 진행되고, 로그아웃을 누른 후 다시 로그인을 누르면

계정을 선택하라는 창이 뜬다.

 

유니티에는 이와 관련한 문서가 넘쳐나는데, 언리얼에는 영어 문서 한두개가 전부라 이번 시간에 정리해보았다.

상황에 맞게 잘 응용하여 더 좋은 프로젝트를 만들기 바란다.