개발이야기
[Unity] GameCenter로 Firebase인증하기
Kim_Jack
2021. 5. 31. 22:34
반응형
GameCenter로 Firebase인증하기
유니티에서 IOS Game Center → FireBase 접속
https://firebase.google.com/docs/auth/unity/start?authuser=0
자 우선 여기가 파이어베이스 메뉴얼인데, 이 글을 보면 Game Center로 로그인하는 카테고리만 쏙 빠져있다.
이 부분 때문에 처음에는 Xcode로 빌드해서 파이어베이스 연동 부분을 네이티브로 짜야하나? 라는 끔찍한 생각을 했다.
하지만 구글링을 하다가 해결책을 찾았다.
이 깃 에 들어가면 Unity에서 Firebase에 관련된 거의 모든 코드들이 들어있다.
Firebase를 사용해서 구현할 부분들은 이 깃을 참고하면 많이 도움이 될 거 같다.
auth 폴더에서 Game Center로 파이어베이스를 접속하는 부분을 찾아서 본인의 코드에 붙여 넣으면 된다.
void LoginProcess_GameCenter()
{
Debug.Log("LoginProcess_GameCenter");
SignInWithGameCenterAsync();
}
public Task SignInWithGameCenterAsync()
{
FirebaseAuth auth = FirebaseAuth.DefaultInstance;
var credentialTask = Firebase.Auth.GameCenterAuthProvider.GetCredentialAsync();
var continueTask = credentialTask.ContinueWithOnMainThread(task =>
{
if (!task.IsCompleted)
return null;
if (task.Exception != null)
Debug.Log("GC Credential Task - Exception: " + task.Exception.Message);
var credential = task.Result;
var loginTask = auth.SignInWithCredentialAsync(credential);
return loginTask.ContinueWithOnMainThread(HandleSignInWithUser);
});
return continueTask;
}
// Called when a sign-in without fetching profile data completes.
void HandleSignInWithUser(Task<Firebase.Auth.FirebaseUser> task)
{
//EnableUI();
if (LogTaskCompletion(task, "Sign-in"))
{
Debug.Log(String.Format("{0} signed in", task.Result.DisplayName));
}
}
// Log the result of the specified task, returning true if the task
// completed successfully, false otherwise.
protected bool LogTaskCompletion(Task task, string operation)
{
bool complete = false;
if (task.IsCanceled)
{
Debug.Log(operation + " canceled.");
}
else if (task.IsFaulted)
{
Debug.Log(operation + " encounted an error.");
foreach (Exception exception in task.Exception.Flatten().InnerExceptions)
{
string authErrorCode = "";
Firebase.FirebaseException firebaseEx = exception as Firebase.FirebaseException;
if (firebaseEx != null)
{
authErrorCode = String.Format("AuthError.{0}: ",
((Firebase.Auth.AuthError)firebaseEx.ErrorCode).ToString());
}
Debug.Log(authErrorCode + exception.ToString());
}
}
else if (task.IsCompleted)
{
Debug.Log(operation + " completed");
complete = true;
}
return complete;
}
성공 !
https://hub1234.tistory.com/43?category=376918
https://hub1234.tistory.com/41?category=376918
반응형