Autentica in Unity utilizzando i servizi per i giochi di Google Play
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Puoi usare i servizi di Google Play Giochi per consentire ai giocatori di accedere a un gioco Android
basate su Firebase e Unity. Per utilizzare l'accesso con Firebase ai servizi Google Play, innanzitutto fai accedere il giocatore a Google Play e richiedi un codice di autenticazione OAuth 2.0. Quindi, passa il codice di autenticazione a PlayGamesAuthProvider per generare una credenziale Firebase, che potrai utilizzare per autenticarti con Firebase.
Prima di iniziare
Configurare il progetto Unity
Aggiungi il file di configurazione di Firebase e l'SDK UnityFirebase al tuo progetto Unity
come descritto in
Aggiungi Firebase al tuo progetto Unity.
Segui le istruzioni per Android.
Assicurati di importare FirebaseAuth.unitypackage.
Nell'editor Unity, in Build Settings > (Impostazioni build >) Impostazioni del player > Altro
Impostazioni imposta il nome del pacchetto Android del tuo gioco.
Poi, in Impostazioni di compilazione > Impostazioni del player > Impostazioni di pubblicazione,
seleziona o crea un keystore e una chiave, che verranno utilizzati per firmare il pacchetto Android. Affinché l'accesso a Play Giochi funzioni, l'APK deve essere firmato
non si applica solo alla pubblicazione, ma anche durante lo sviluppo
il tuo gioco.
Configura il progetto Firebase
Nella console Firebase, vai al progetto Firebase in cui hai registrato il progetto Unity.
Imposta la fingerprint SHA-1 del tuo gioco dalla pagina Impostazioni della console Firebase utilizzando la chiave impostata in Unity.
Puoi ottenere l'impronta SHA-1 della tua chiave con il comando keytool:
Genera e ottieni l'ID client e il client secret del server web del tuo progetto:
Nella scheda Metodo di accesso, attiva l'opzione Accedi con Google.
o il provider di servizi di terze parti.
Copia l'ID client e il secret del server web da Accedi con Google
o il provider di servizi di terze parti.
Nella scheda Metodo di accesso, attiva Play Games.
di accesso e specificare l'ID client del server web e
il client secret ottenuto nell'ultimo passaggio.
Configura Play Games services con le informazioni dell'app Firebase
Nella sezione Crescita, fai clic su
Play Games services > Configurazione e Gestione > Configurazione.
Fai clic su Sì, il mio gioco utilizza già API di Google, seleziona il progetto Firebase dall'elenco e poi fai clic su Utilizza.
Nella pagina di configurazione Play Games services, fai clic su
Aggiungi credenziale.
Seleziona il tipo Server di gioco.
Nel campo Client OAuth, seleziona l'ID client web del progetto. Essere
assicurati che sia lo stesso ID client specificato al momento dell'attivazione
Accesso con Play Games.
Salva le modifiche.
Sempre nella pagina di configurazione di Play Games services, fai clic su
Aggiungi credenziale di nuovo.
Seleziona il tipo per Android.
Nel campo Client OAuth, seleziona l'ID client Android del tuo progetto.
Se non vedi il tuo ID client Android, assicurati di impostare il
Impronta SHA-1 nella console Firebase.)
Salva le modifiche.
Nelle pagine Eventi, Obiettivi e Classifiche, crea un
Play Games risorse da usare con il gioco (se non
utilizzare immediatamente, puoi creare una voce segnaposto). Quindi, il giorno
una delle pagine Eventi, Obiettivi o Classifiche, fai clic su
Recupera le risorse e copia lo snippet delle risorse Android da qualche parte
pratico. Ti servirà lo snippet per configurare Google Play Games services
.
Lo snippet delle risorse è simile all'esempio seguente:
Importa il pacchetto Unity del plug-in nel tuo progetto Unity. Puoi trovare il
pacchetto Unity nella directory current-build dell'archivio delle release.
Configura il plug-in di Play Giochi:
Fai clic su Finestra > Google Play Giochi > Configurazione > Configurazione di Android per aprire
Schermata Android Configuration (Configurazione Android).
Incolla lo snippet delle risorse Android ricevuto da Play Console in
nel campo Definizione delle risorse.
Incolla l'ID client del server web fornito al momento dell'attivazione
Accedi a Play Giochi nella console Firebase, nell'ID client
.
Fai clic su Configurazione.
Nel tuo gioco, configura un client Play Giochi con RequestServerAuthCode
attivata:
usingGooglePlayGames;usingGooglePlayGames.BasicApi;usingUnityEngine.SocialPlatforms;usingSystem.Threading.Tasks;PlayGamesClientConfigurationconfig=newPlayGamesClientConfiguration.Builder().RequestServerAuthCode(false/* Don't force refresh */).Build();PlayGamesPlatform.InitializeInstance(config);PlayGamesPlatform.Activate();
Quando un giocatore sceglie di accedere con Play Giochi, chiama
Social.localUser.Authenticate():
Social.localUser.Authenticate((boolsuccess)=>{// handle success or failure});
Esegui l'autenticazione con Firebase
Dopo aver aggiunto l'accesso a Play Giochi, puoi utilizzare il codice di autorizzazione di
tramite i servizi per i giochi di Play per l'autenticazione con Firebase.
Dopo che il giocatore ha eseguito l'accesso tramite Play Giochi, l'accesso
continuation, ottieni un codice di autorizzazione per l'account del player:
Quindi, sostituisci il codice di autorizzazione dei servizi Play Giochi con un codice Firebase
e usa la credenziale Firebase per autenticare il giocatore:
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);});
Passaggi successivi
Dopo che un utente ha eseguito l'accesso per la prima volta, viene creato un nuovo account utente e
collegati al suo ID Play Giochi. Il nuovo account è memorizzato come parte di
progetto Firebase e può essere utilizzato per identificare un utente in ogni app
progetto.
Nel gioco, puoi ottenere l'UID Firebase dell'utente
Oggetto Firebase.Auth.FirebaseUser:
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;}
Nelle regole di sicurezza di Firebase Realtime Database e Cloud Storage, puoi recuperare
l'ID utente univoco dell'utente che ha eseguito l'accesso dalla variabile auth e utilizzarlo per controllare i dati a cui un utente può accedere.
Per ottenere le informazioni del giocatore di Play Giochi di un utente o per accedere ai servizi di Play Giochi,
utilizza le API fornite dal plug-in Play Giochi.
[null,null,["Ultimo aggiornamento 2025-08-16 UTC."],[],[],null,["You 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\nSet 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\nSet 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\nConfigure 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\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\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\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();"]]