필요한 선행 작업
로그인 SDK 를 유니티에 설치해야 합니다. [보러가기]
이메일/비밀번호 로그인 방법에 대해 알아주셔야 합니다. [보러가기]
파이어베이스 콘솔창 설정
콘솔창의 DEVELOP > Authentication > 로그인 방법에서 제공업체 Google 의 상태를 활성화시켜줍니다.
(이메일/비밀번호에서 설명한 내용과 종복되는 내용이 있어, 상세한 설명은 생략합니다.)
SHA 인증서 지문 추가하기
유니티에서 Keytool 을 생성해야 합니다. (생성 방법은 아래에 링크 걸어드릴게요)
생성한 keytool 로 SHA 정보를 확인해야합니다.
윈도우에서 CMD 명령어 콘솔창을 팝업한 뒤에 Keytool 파일이 저장된 경로로 이동하고
keytool -list -v -keystore keystore파일이름 을 입력하면 keytool 의 모든 정보가 출력됩니다.
마우스 우측 클릭으로 명령어창을 열고 표시를 누르면 콘솔창에서 드래그를 할 수가 있는데요.
SHA1 : 어쩌고 << 이 라인을 드래그해서 컨트롤+C 한 다음 메모장에 붙여넣기 합니다.
파이어베이스 콘솔창으로 이동한 뒤에 프로젝트 설정에서 방금 복사한 SHA 를 추가해 줍니다.
변경된 google-servies.json 파일을 다시 다운받으시고
유니티에 있는 google-servies.json는 삭제하시고 새로 임포트 해 줍니다.
구글개발자 콘솔에 어플 등록하기
구글에 '개발자콘솔' 이라고 검색해서 개발자콘솔창 페이지로 이동한다.
구글개발자 등록을 해야하며, 3만원 정도의 비용이 들어간다.
애플리케이션 만들기를 누른다.
스토어 등록정보를 작성한다. ( * 로 표시된 항목은 꼭 기입한다. )
이미지를 집어넣는게 제일 짜증난다.
좌측의 앱버전을 누르고 알파항목에서 알바 버전 관리를 눌러 앱을 등록한다. 그리고 하단의 검토를 누른다.
그 다음 콘텐츠 등급을 눌러서 대충 마무리 짓는다. (우린 출시할게 아니니 대충해도 상관없다.)
가격 및 배포를 눌러서 대충 마무리 짓고 출시준비 버튼을 누른다.
다시 알파버전 관리로 들어와서 알파 출시 시작을 누른다음 테스트할 방법을 선택하고 출시를 시키면20~30분 뒤에 게시가 된다.
파이어베이스 콘솔창의 GooglePlay 연결상태 확인
설정 > 계정 연결에서 App 이 구글플레이와 연결되어 있는지 확인한다.
연결안됨 상태로 표기되어 있다면 GOOGLE PLAY 계정 연결 해제를 한 뒤에 다시 연결한다.
게임서비스 등록
구글개발자 콘솔에서 게임서비스를 누른다.
'새 게임 추가' 버튼을 눌러서 테스트할 어플을 등록한다.
게임에서 이미 GoogleAPI를 사용하고 있습니다. 탭 선택하고 테스트앱을 선택한 뒤에 계속버튼을 누른다.그 뒤에 게임설명을 적고 저장을 누른다.
연결된 앱 메뉴를 선택하고 ANDROID 를 선택한다.
패키지 이름을 누르면 드랍다운 방식으로 리스트가 나온다. 그 중에 테스트할 앱의 패키지 이름을 선택한다.
그리고 저장하고 저장하고 계속 버튼을 누른다.
그리고 업적을 대충 한개 만든다음 리소스 받기를 눌러서 복사해 놓는다.
우측의 테스트 메뉴를 누른다음 테스터를 등록한다. (출시는 하지 않는다.)
구글플레이게임 서비스 설치하기
구글플레이게임SDK 를 다운받는다. [SDK 다운받기]
유니티에 GooglePlayGamesPlugin-0.9.42.unitypackage 파일을 임포트한다.
유니티에 OAuth 2.0 클라이언트 ID 입력하기
구글 클라우드 폴랫폼으로 이동한다. [구글클라우드폴랫폼 바로가기]
상단의 Google Cloud Platform 옆에 APP 을 선택하는 항목에서 테스트할 앱을 선택한다.
OAuth 2.0 클라이언트 ID 중에
Web cilent(auto create by Google service) 라고 적힌 것의클라이언트 ID 를 복사한다.
유니티를 실행해서 Window > Google Play Games > Setup > Android setup 을 누른다.
위에서 복사한 ClientID 와 업적만들기 했을때 복사했던 코드를 집어 넣는다.
코드 작성하기
Login.cs 에 아래 코드를 추가한다.
using UnityEngine;
using UnityEngine.UI;
using Firebase.Auth;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using System.Collections;
public void GoogleLoginBtnOnClick()
{
GooglePlayServiceInitialize();
Social.localUser.Authenticate(success =>
{
if (success == false) return;
StartCoroutine(coLogin());
});
}
void GooglePlayServiceInitialize()
{
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
.RequestIdToken()
.Build();
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
}
IEnumerator coLogin()
{
while (System.String.IsNullOrEmpty(((PlayGamesLocalUser)Social.localUser).GetIdToken()))
yield return null;
string idToken = ((PlayGamesLocalUser)Social.localUser).GetIdToken();
string accessToken = null;
Credential credential = GoogleAuthProvider.GetCredential(idToken, accessToken);
auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
if (task.IsCanceled)
{
Debug.LogError("SignInWithCredentialAsync was canceled.");
return;
}
if (task.IsFaulted)
{
Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
return;
}
FirebaseUser newUser = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
newUser.DisplayName, newUser.UserId);
loginResult.text = " 구글 로그인 굿럭";
});
}
그리고 Unity 로 돌아와서 GoogleBtn 을 만들어서 GoogleLoginBtnOnClick함수를 연결해준다.
모바일로 빌드한 다음 테스트하면 구글계정이 등록되는걸 알 수 있다.
** 마무리삽질을 너무 많이해서.. 다른 블로그들을 참고를 많이 했다.
'프로그램 강좌 > 유니티 + 파이어베이스' 카테고리의 다른 글
파이어베이스(firebase) Cloud Functions #1 (2) | 2017.11.22 |
---|---|
파이어베이스 유니티 Realtime Database (7) | 2017.11.21 |
파이어베이스 유니티 로그인(이메일/비밀번호) (4) | 2017.11.16 |
파이어베이스 유니티 SDK 설치하기 (2) | 2017.11.16 |
댓글