유니티 Firebase 구글 로그인 구현Unity/SDK2024. 1. 15. 15:44
Table of Contents
필수 과정
- Firebase 사이트에서 테스트 프로젝트 생성
- 프로젝트 기능으로 Authentication 등록
- Unity에서 연동할 SDK와 google-services-json 파일 업로드
- Android 빌드 맞춤과 Project Settings에서 user key 생성
- 생성한 key에서 SHA 인증서 지문 등록
- unity 패키지 이름 = Firebase 패키지 이름 맞추기 (com.company.name)
- Google Web Client ID 준비
- 구글 Signin 패키지 다운
기능 구현
FirebaseManager.cs
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
using Firebase;
using Firebase.Auth;
using Firebase.Extensions;
using Google;
using TMPro;
public class FirebaseManager : MonoBehaviour
{
private FirebaseAuth auth;
private readonly string googleWebAPI = "구글 웹 클라이언트 ID";
private GoogleSignInConfiguration configuration;
private bool isSignin = false;
public TextMeshProUGUI noticeText;
public TextMeshProUGUI loginText;
public Button signinBtn;
private void Awake()
{
// Firebase 초기화
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task =>
{
if (task.IsCanceled || task.IsFaulted)
{
noticeText.text = "Firebase Initialize Failed";
return;
}
noticeText.text = "Firebase Initialize Complete";
FirebaseApp app = FirebaseApp.DefaultInstance;
auth = FirebaseAuth.DefaultInstance;
// 구글 SDK를 활용한 로그인 기능 등록
configuration = new GoogleSignInConfiguration { WebClientId = googleWebAPI, RequestEmail = true, RequestIdToken = true };
});
}
private void OnSignIn()
{
// 로그인, 로그아웃 구분
if (!isSignin)
{
GoogleSignIn.Configuration = configuration;
GoogleSignIn.Configuration.UseGameSignIn = false;
GoogleSignIn.Configuration.RequestIdToken = true;
GoogleSignIn.DefaultInstance.SignIn().ContinueWith(SignInWithGoogle);
}
else
{
GoogleSignIn.DefaultInstance.SignOut();
loginText.text = "GOOGLE LOGIN";
}
isSignin = !isSignin;
}
private void SignInWithGoogle(Task<GoogleSignInUser> task)
{
// 구글 로그인
Credential credential = GoogleAuthProvider.GetCredential(task.Result.IdToken, null);
auth.SignInWithCredentialAsync(credential).ContinueWithOnMainThread(task =>
{
if (task.IsCanceled || task.IsFaulted)
{
noticeText.text= "Google Sign-In Failed";
return;
}
noticeText.text = "Google Sign-In Successful!";
loginText.text = "LOGOUT";
});
}
}
'Unity > SDK' 카테고리의 다른 글
유니티 Firebase 랭킹 시스템 (0) | 2024.02.06 |
---|---|
유니티 Firebase를 활용한 데이터 시스템 (0) | 2024.01.29 |
유니티 FirestoreProperty를 사용한 C# 클래스 매핑 (0) | 2024.01.21 |
유니티 Firestore를 통한 데이터 저장 & 불러오기 (0) | 2024.01.18 |