반응형
Firebase SDK import
이거 3개 import
① FirebabseAuth
② FirebaseAnalytics
③ FirebaseFirestore
Autentication
Oauth2.0 등 Google 연동은 이미 완료된 상태
OAuth2.0클라이언트 ID에 Web client 가 생성되어 있어야 함.
디지털 지문을 추가 (SHA1, SHA256) 서비스용, 테스트용 총 4개 넣음
using System.Collections;
using UnityEngine;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.UI;
using Firebase.Auth;
public class AuthTest : MonoBehaviour
{
private FirebaseAuth auth;
public Text loginStatusText;
private void Start()
{
PlayGamesPlatform.InitializeInstance(new PlayGamesClientConfiguration.Builder()
.RequestIdToken()
.RequestEmail()
.Build());
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
auth = FirebaseAuth.DefaultInstance;
}
public void Login()
{
Debug.Log($"SSS Social.localUser.authenticated: {Social.localUser.authenticated}");
if(!Social.localUser.authenticated)
{
Social.localUser.Authenticate((bool isSuccess) =>
{
if(isSuccess)
{
loginStatusText.text = $"Success \n{Social.localUser.userName} \n{Social.localUser.id}";
}
else
{
loginStatusText.text = "Fail";
}
}
);
}
else
{
loginStatusText.text = "Already Logined.";
}
}
public void Logout()
{
((PlayGamesPlatform)Social.Active).SignOut();
loginStatusText.text = "Logout";
}
public void CheckName() {
if(Social.localUser.authenticated)
{
loginStatusText.text = $"{Social.localUser.userName.ToString()} / {Social.localUser.id.ToString()}";
}
else
{
loginStatusText.text = "Not Logined.";
}
}
public void FirebaesLogin()
{
if (!Social.localUser.authenticated)
{
Social.localUser.Authenticate(success =>
{
if (success)
{
loginStatusText.text = "Firebase Login Success";
StartCoroutine(RunFirebaseLogin());
}
else
{
loginStatusText.text = "Firebase Login Fail";
}
});
}
}
public void FirebaseLogout()
{
if (Social.localUser.authenticated)
{
PlayGamesPlatform.Instance.SignOut();
auth.SignOut();
loginStatusText.text = "Firebase Logout";
}
}
IEnumerator RunFirebaseLogin()
{
while (string.IsNullOrEmpty(((PlayGamesLocalUser)Social.localUser).GetIdToken()))
{
yield return null;
}
string idToken = ((PlayGamesLocalUser)Social.localUser).GetIdToken();
Credential credential = GoogleAuthProvider.GetCredential(idToken, 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;
}
Debug.Log("Firebase Success");
});
}
}
위처럼 샘플코드를 작성하고,
InitializationException : Firebase app creation failed.
유니티 2020버전 자체 버그라고 함.
어디서 보고 버전을 2019.3.15f로 Downgrade하니 빌드도 꼬이고 망함.
Solution
① 2019.3.15f 로 프로젝트를 새로 생성. (Cosole 관련은 이미 다 해놨으니 Unity만 설정)
② Firebase SDK를 Google Play Service SDK 보다 먼저 import함.
둘중에 뭐가 문제인지는 모름.
Reference
여기 포스팅 중간 뛰어넘고 Firebase바로 설정하는 부분 따라하는게 가장 오류가 적은 것 같음.
https://inyongs.tistory.com/35
반응형
'Unity > Unity 리서치' 카테고리의 다른 글
Unity Admob 연동하기 (0) | 2021.05.16 |
---|---|
Unity와 Firebase Firestore 데이터 연동 (0) | 2021.05.16 |
Unity 구글로그인 - (2) (0) | 2021.05.08 |
Unity 구글 플레이와 연동하기 - (1) (0) | 2021.05.06 |
MRTK 환경에서 Object에 그림자가 심하게 질때 (0) | 2020.12.19 |