Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

행복한 개구리

소셜로그인 21.06.30. Firebase - Google 본문

소셜 로그인/수업내용

소셜로그인 21.06.30. Firebase - Google

HappyFrog 2021. 6. 30. 11:58
 

Unity 프로젝트에 Firebase 추가

Unity 프로젝트에 Firebase 추가plat_iosplat_androidplat_unity Firebase Unity SDK를 활용하여 Unity 게임을 업그레이드 해보세요. Firebase를 Unity 프로젝트에 연결하는 것이 얼마나 간편한지 보여드리기 위해 Google

firebase.google.com

Firebase docs


우선 Firebase - Google에 들어가서 사용할 앱을 추가하자.

나는 두개의 앱이 이름이 같지만 둘의 ID가 다르기때문에 ID로 구분할 수 있었다.

 

FIrebase에서 요구하는 조건들을 충족시켜주며 다음으로 나아가자.

 

국가 설정을 하고 Firebase를 추가하자.

 

여기까지 했다면 다음 설정창이 나온다.

"계속"
"계속22"
전부 완료되면 해당 화면이 나올것이다.

유니티 로고 클릭

 

앱 네임은 마음대로
패키지 이름은 Google Play Console에서 확인할 수 있다.

Firebase SDK를 추가해야한다.

 

다음으로 할 일 // Firebase API
아까 받았던 Json파일을 Unity에 임포트 시켜준다.

 

주의

이후 아까 3단계에서 다운받은 firebase SDK를 압축을 풀어준 뒤 우리가 필요한 Auth(인증)을 유니티 프로젝트에 임포트하자.

나는 2019이후 버전이므로 dotnet4패키지를 사용했다.

 

FirebaseAuth = 인증

 

Assets하위에 넣기 / 아무데나 상관 x

 

여기까지 설정이 되었다면 이제 Android Setup에 들어가서 Firebase에서 생성한 WebClientID를 클라이언트 ID로서 새롭게 입력해주자.

 

이 다음에는 GoogleIdToken을 얻기 위해 조금의 코드를 추가해보자.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;
using UnityEngine.SceneManagement;

public class App : MonoBehaviour
{
    public enum ePlayMode
    {
        Test, Build
    }

    public Text version;
    public Text txtId;
    public Text txtUserName;
    public Text txtState;
    public Image thumb; //아바타 이미지
    public Button btnStart;
    public ePlayMode playMode;

    void Start()
    {

        if (playMode == ePlayMode.Test)
        {
            this.btnStart.gameObject.SetActive(true);
        }
        else
        {
            this.btnStart.gameObject.SetActive(false);
        }
        
        this.btnStart.onClick.AddListener(() =>
        {
            
            SceneManager.LoadSceneAsync("GameScene").completed += (oper) =>
            {
                GameMain gameMain = GameObject.FindObjectOfType<GameMain>();
                gameMain.Init(Social.localUser.userName);
            };
        });

        this.version.text = Application.version;


        Debug.Log("==================== Init GPGS");

        PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
            .RequestIdToken()
            .Build();

        PlayGamesPlatform.InitializeInstance(config);
        PlayGamesPlatform.DebugLogEnabled = true;
        PlayGamesPlatform.Activate();

        Debug.Log("==================== Authenticate");

        PlayGamesPlatform.Instance.Authenticate(SignInInteractivity.CanPromptOnce, (result) => {

            this.txtState.text = result.ToString();

            if (result == SignInStatus.Success)
            {
                var localUser = (PlayGamesLocalUser)Social.localUser;
                var googleIdToken = localUser.GetIdToken();
                Debug.LogFormat("googleIdToken: {0}", googleIdToken);

                Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
                Firebase.Auth.Credential credential =
                Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, null);
                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;
                    }

                    Firebase.Auth.FirebaseUser newUser = task.Result;
                    Debug.LogFormat("User signed in successfully: {0} ({1})",
                        newUser.DisplayName, newUser.UserId);
                });
            }
        });
    }
}

GoogleIdToken을 받아서 해당 ID토큰을 이용하여 Firebase에 인증을 시도하는 코드이다.

그리고 NOX의 adb를 사용하여 로그를 살펴보면 구글ID토큰이 제대로 들어오는 것을 확인할 수 있다.

UI에서 Success만 코드로 할당했다.