Firebase와 Unity 기반으로 개발된 Android 게임에서 플레이어가 Google Play 게임즈 서비스를 사용하여 로그인하도록 할 수 있습니다. Firebase에서 Google Play 게임즈 서비스 로그인을 사용하려면 우선 Google Play 게임즈에 플레이어를 로그인 처리하면서 OAuth 2.0 인증 코드를 요청합니다. 그런 다음 PlayGamesAuthProvider에 인증 코드를 전달하여 Firebase 사용자 인증 정보를 생성합니다. 이 인증 정보를 사용하여 Firebase에 인증할 수 있습니다.
시작하기 전에
Unity 프로젝트 설정
Unity 프로젝트에 Firebase 추가에 설명된 대로 Firebase 구성 파일과 FirebaseUnity SDK를 Unity 프로젝트에 추가합니다.
Android용 안내를 따릅니다.
FirebaseAuth.unitypackage를 가져와야 합니다.
Unity 편집기의 Build Settings(빌드 설정) > Player Settings(플레이어 설정) > Other Settings(기타 설정)에서 게임의 Android 패키지 이름을 설정합니다.
그런 다음 Build Settings(빌드 설정) > Player Settings(플레이어 설정) > Publishing Settings(게시 설정)에서 Android 패키지 서명에 사용할 키 저장소와 키를 선택하거나 만듭니다. APK를 서명해야 Play 게임즈 로그인이 작동합니다. 이 요구사항은 게시뿐 아니라 게임 개발 단계에도 적용됩니다.
Firebase 프로젝트 설정
Firebase 콘솔에서 Unity 프로젝트를 등록한 Firebase 프로젝트로 이동합니다.
Unity에서 설정한 키를 사용하여 Firebase 콘솔의 설정 페이지에서 게임의 SHA-1 지문을 설정합니다.
성장 섹션에서 Play Games services > 설정 및 관리 > 구성을 클릭합니다.
예, 게임에서 이미 Google API를 사용하고 있습니다를 클릭하고 목록에서 Firebase 프로젝트를 선택한 후 사용을 클릭합니다.
Play Games services 구성 페이지에서 사용자 인증 정보 추가를 클릭합니다.
게임 서버 유형을 선택합니다.
OAuth 클라이언트 입력란에서 프로젝트의 웹 클라이언트 ID를 선택합니다. 이 ID는 Play Games 로그인을 사용 설정할 때 지정한 클라이언트 ID와 일치해야 합니다.
변경사항을 저장합니다.
Play Games services 구성 페이지에서 다시 사용자 인증 정보 추가를 클릭합니다.
Android 유형을 선택합니다.
OAuth 클라이언트 입력란에서 프로젝트의 Android 클라이언트 ID를 선택합니다.
(Android 클라이언트 ID가 표시되지 않는 경우 Firebase Console에서 게임의 SHA-1 디지털 지문을 설정해야 합니다.)
변경사항을 저장합니다.
이벤트, 업적, 리더보드 페이지에서 게임에 사용할 Play Games 리소스를 만듭니다. 이러한 리소스를 바로 사용하고 싶지 않다면 자리표시자 항목을 만들 수 있습니다. 그런 다음 이벤트, 업적, 리더보드 페이지 중 한 곳에서 리소스 가져오기를 클릭하고 편리한 위치에 Android 리소스 스니펫을 복사합니다. Google Play Games services 플러그인을 설정하는 데 스니펫이 필요합니다.
플러그인의 Unity 패키지를 Unity 프로젝트로 가져옵니다. 출시 보관파일의 current-build 디렉터리에서 Unity 패키지를 찾을 수 있습니다.
Play 게임즈 플러그인을 설정합니다.
Window > Google Play Games > Setup > Android Setup을 클릭하여
Android Configuration 화면을 엽니다.
Play Console에서 가져온 Android 리소스 스니펫을 Resources Definition
필드에 붙여넣습니다.
Firebase 콘솔에서 Play 게임즈 로그인을 사용 설정할 때 입력한 웹 서버 클라이언트 ID를 Client ID 필드에 붙여넣습니다.
설정을 클릭합니다.
게임에서 RequestServerAuthCode 설정을 사용 설정하여 Play 게임즈 클라이언트를 구성합니다.
usingGooglePlayGames;usingGooglePlayGames.BasicApi;usingUnityEngine.SocialPlatforms;usingSystem.Threading.Tasks;PlayGamesClientConfigurationconfig=newPlayGamesClientConfiguration.Builder().RequestServerAuthCode(false/* Don't force refresh */).Build();PlayGamesPlatform.InitializeInstance(config);PlayGamesPlatform.Activate();
그런 다음 플레이어가 Play 게임을 사용하여 로그인하도록 선택하면 Social.localUser.Authenticate()를 호출합니다.
Social.localUser.Authenticate((boolsuccess)=>{// handle success or failure});
Firebase에 인증
게임에 Play 게임즈 로그인을 추가한 후 Play 게임즈 서비스의 인증 코드를 사용하여 Firebase에 인증할 수 있습니다.
플레이어가 Play 게임으로 로그인한 후 로그인 지속 핸들러에서
플레이어 계정의 인증 코드를 가져옵니다.
그런 다음 Play 게임즈 서비스의 인증 코드를 Firebase 사용자 인증 정보로 교환하고, Firebase 사용자 인증 정보를 사용하여 플레이어를 인증합니다.
Firebase.Auth.FirebaseAuthauth=Firebase.Auth.FirebaseAuth.DefaultInstance;Firebase.Auth.Credentialcredential=Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task=>{if(task.IsCanceled){Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");return;}if(task.IsFaulted){Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: "+task.Exception);return;}Firebase.Auth.AuthResultresult=task.Result;Debug.LogFormat("User signed in successfully: {0} ({1})",result.User.DisplayName,result.User.UserId);});
다음 단계
사용자가 처음으로 로그인하면 신규 사용자 계정이 생성되어 사용자의 Play 게임즈 ID에 연결됩니다. 이 신규 계정은 Firebase 프로젝트에 저장되며 프로젝트의 모든 앱에서 사용자 식별에 사용할 수 있습니다.
게임에서 Firebase.Auth.FirebaseUser 객체로부터 사용자의 Firebase UID를 가져올 수 있습니다.
Firebase.Auth.FirebaseUseruser=auth.CurrentUser;if(user!=null && user.IsValid()){stringplayerName=user.DisplayName;// The user's Id, unique to the Firebase project.// Do NOT use this value to authenticate with your backend server, if you// have one; use User.TokenAsync() instead.stringuid=user.UserId;}
Firebase 실시간 데이터베이스와 Cloud Storage 보안 규칙의 auth 변수에서 로그인한 사용자의 고유 사용자 ID를 가져온 후 이 ID를 통해 사용자가 액세스할 수 있는 데이터를 관리할 수 있습니다.
사용자의 Play 게임즈 플레이어 정보를 가져오거나 Play 게임즈 서비스에 액세스하려면 Play 게임즈 플러그인에서 제공하는 API를 사용하세요.
[null,null,["최종 업데이트: 2025-08-16(UTC)"],[],[],null,["# Authenticate in Unity Using Google Play Games Services\n\nYou can use Google Play Games services to sign in players to an Android game\nbuilt on Firebase and Unity. To use Google Play Games services sign-in with\nFirebase, first sign in the player with Google Play Games, and request an\nOAuth 2.0 auth code when you do so. Then, pass the auth code to\n`PlayGamesAuthProvider` to generate a Firebase credential, which you can use to\nauthenticate with Firebase.\n| **Important:** You can use Google Play Games services sign-in only on Android.\n\nBefore you begin\n----------------\n\n### Set up your Unity project\n\n1. Add the Firebase config file and the Firebase Unity SDK to your Unity project\n as described in\n [Add Firebase to your Unity project](/docs/unity/setup#set_up_environment).\n Follow the instructions for Android.\n\n Be sure to import `FirebaseAuth.unitypackage`.\n2. In the Unity Editor, under **Build Settings \\\u003e Player Settings \\\u003e Other\n Settings** set the Android package name of your game.\n\n3. Then, under **Build Settings \\\u003e Player Settings \\\u003e Publishing Settings**,\n select or create a keystore and key, which will be used to sign your Android\n package. Your APK must be signed for Play Games sign-in to work---this\n requirement applies not just for publishing, but also during development of\n your game.\n\n### Set up your Firebase project\n\n1. In the [Firebase console](//console.firebase.google.com/), go to the Firebase project\n in which you registered your Unity project.\n\n2. Set your game's SHA-1 fingerprint from the\n [Settings](//console.firebase.google.com/project/_/settings/general/) page\n of the Firebase console, using the key you set in Unity.\n\n You can get the SHA-1 fingerprint of your key with the `keytool` command: \n\n ```\n keytool -exportcert -list -v \\\n -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE\n ```\n\n \u003cbr /\u003e\n\n Alternatively, you can get the SHA hash of your signing certificate with the\n gradle `signingReport` command: \n\n ```\n gradlew signingReport\n ```\n\n \u003cbr /\u003e\n\n Your APK must be signed with this key, including during development.\n3. Enable Google Play Games as a sign-in provider:\n\n 1. In the Firebase console, open the\n [**Authentication** section](//console.firebase.google.com/project/_/authentication/providers).\n\n 2. Generate and obtain your project's web server client ID and client\n secret:\n\n 1. Within the **Sign in method** tab, enable the **Google** sign-in\n provider.\n\n 2. Copy the web server client ID and secret from the **Google** sign-in\n provider.\n\n 3. Within the **Sign in method** tab, enable the **Play Games**\n sign-in provider, and specify your project's web server client ID and\n client secret, which you got in the last step.\n\n### Configure Play Games services with your Firebase app information\n\n1. In the\n [Google Play Console](https://play.google.com/console/developers),\n open your Google Play app or create one.\n\n2. In the *Grow* section, click\n **Play Games services \\\u003e Setup \\& Management \\\u003e Configuration**.\n\n3. Click **Yes, my game already uses Google APIs** , select your Firebase\n project from the list, and then click **Use**.\n\n4. On the Play Games services configuration page, click\n **Add Credential**.\n\n 1. Select the **Game server** type.\n 2. In the **OAuth client** field, select your project's web client ID. Be sure this is the same client ID you specified when you enabled Play Games sign-in.\n 3. Save your changes.\n5. Still on the Play Games services configuration page, click\n **Add Credential** again.\n\n 1. Select the **Android** type.\n 2. In the **OAuth client** field, select your project's Android client ID. (If you don't see your Android client ID, be sure you set your game's SHA-1 fingerprint in the Firebase console.)\n 3. Save your changes.\n6. On the **Events** , **Achievements** , and **Leaderboards** pages, create any\n Play Games resources you want to use with your game (if you don't\n want to use any immediately, you can create a placeholder entry). Then, on\n any of the **Events** , **Achievements** , or **Leaderboards** pages, click\n **Get resources** and copy the Android resources snippet somewhere\n convenient. You will need the snippet to set up the Google Play Games services\n plugin.\n\n The resources snippet looks like the following example: \n\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003c!--\n Google Play game services IDs.\n Save this file as res/values/games-ids.xml in your project.\n --\u003e\n \u003cresources\u003e\n \u003c!-- app_id --\u003e\n \u003cstring name=\"app_id\" translatable=\"false\"\u003e123456789000\u003c/string\u003e\n \u003c!-- package_name --\u003e\n \u003cstring name=\"package_name\" translatable=\"false\"\u003ecom.example.game\u003c/string\u003e\n \u003c!-- event Wiped Raid --\u003e\n \u003cstring name=\"event_wiped_raid\" translatable=\"false\"\u003eCgkIpKjv1a4PEAIYBA\u003c/string\u003e\n \u003c/resources\u003e\n\n7. On the **Testers** page, add the email addresses of any users who need\n to be able to sign in to your game before you release it on the\n Play Store.\n\nIntegrate Play Games sign-in into your game\n-------------------------------------------\n\n1. Download the latest release of the\n [Play Games plugin for Unity](https://github.com/playgameservices/play-games-plugin-for-unity/releases)\n and extract it.\n\n2. Import the plugin's Unity package into your Unity project. You can find the\n Unity package in the `current-build` directory of the release archive.\n\n3. Set up the Play Games plugin:\n\n 1. Click **Window \\\u003e Google Play Games \\\u003e Setup \\\u003e Android Setup** to open the **Android Configuration** screen.\n 2. Paste the Android resources snippet you got from the Play console into the **Resources Definition** field.\n 3. Paste your web server client ID, which you provided when you enabled Play Games sign-in in the Firebase console, into the **Client ID** field.\n 4. Click **Setup**.\n4. In your game, configure a Play Games client with the `RequestServerAuthCode`\n setting enabled:\n\n using GooglePlayGames;\n using GooglePlayGames.BasicApi;\n using UnityEngine.SocialPlatforms;\n using System.Threading.Tasks;\n\n PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()\n .RequestServerAuthCode(false /* Don't force refresh */)\n .Build();\n\n PlayGamesPlatform.InitializeInstance(config);\n PlayGamesPlatform.Activate();\n\n5. Then, when a player chooses to sign in with Play Games, call\n `Social.localUser.Authenticate()`:\n\n Social.localUser.Authenticate((bool success) =\u003e {\n // handle success or failure\n });\n\nAuthenticate with Firebase\n--------------------------\n\nAfter you add Play Games sign-in to your game, you can use the auth code from\nPlay Games services to authenticate with Firebase.\n\n1. After the player has successfully signed in using Play Games, in the sign-in\n continuation handler, get an auth code for the player's account:\n\n Social.localUser.Authenticate((bool success) =\u003e {\n if (success) {\n authCode = PlayGamesPlatform.Instance.GetServerAuthCode();\n }\n });\n\n2. Then, exchange the auth code from Play Games services for a Firebase\n credential, and use the Firebase credential to authenticate the player:\n\n Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;\n Firebase.Auth.Credential credential =\n Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);\n auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task =\u003e {\n if (task.IsCanceled) {\n Debug.LogError(\"SignInAndRetrieveDataWithCredentialAsync was canceled.\");\n return;\n }\n if (task.IsFaulted) {\n Debug.LogError(\"SignInAndRetrieveDataWithCredentialAsync encountered an error: \" + task.Exception);\n return;\n }\n\n Firebase.Auth.AuthResult result = task.Result;\n Debug.LogFormat(\"User signed in successfully: {0} ({1})\",\n result.User.DisplayName, result.User.UserId);\n });\n\nNext steps\n----------\n\nAfter a user signs in for the first time, a new user account is created and\nlinked to their Play Games ID. This new account is stored as part of your\nFirebase project, and can be used to identify a user across every app in your\nproject.\n\nIn your game, you can get the user's Firebase UID from the\n`Firebase.Auth.FirebaseUser` object: \n\n Firebase.Auth.FirebaseUser user = auth.CurrentUser;\n if (user != null && user.IsValid()) {\n string playerName = user.DisplayName;\n\n // The user's Id, unique to the Firebase project.\n // Do NOT use this value to authenticate with your backend server, if you\n // have one; use User.TokenAsync() instead.\n string uid = user.UserId;\n }\n\nIn your Firebase Realtime Database and Cloud Storage Security Rules, you can get\nthe signed-in user's unique user ID from the `auth` variable, and use it to\ncontrol what data a user can access.\n\nTo get a user's Play Games player information or to access Play Games services,\nuse the APIs provided by the Play Games plugin.\n\nTo sign out a user, call `SignOut()`: \n\n auth.SignOut();"]]