Melakukan Autentikasi di Unity Menggunakan Layanan Google Play Game
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Anda dapat menggunakan layanan game Google Play untuk memproses login pemain ke game Android
yang dibuat di Firebase dan Unity. Untuk menggunakan fitur login layanan game Google Play dengan
Firebase, pertama-tama proses login pemain dengan Google Play Game, dan minta
kode auth OAuth 2.0 saat melakukannya. Lalu, teruskan kode auth ke
PlayGamesAuthProvider untuk membuat kredensial Firebase yang bisa digunakan untuk
mengautentikasi dengan Firebase.
Sebelum memulai
Menyiapkan project Unity Anda
Tambahkan file konfigurasi Firebase dan FirebaseUnity SDK ke project Unity Anda,
seperti yang dijelaskan dalam
Menambahkan Firebase ke project Unity.
Ikuti petunjuknya untuk Android.
Pastikan untuk mengimpor FirebaseAuth.unitypackage.
Di Unity Editor, di bagian Build Settings > Player Settings > Other Settings tetapkan nama paket Android untuk game Anda.
Lalu, di bagian Build Settings > Player Settings > Publishing Settings, pilih atau buat keystore dan kunci yang akan digunakan untuk menandatangani package Android Anda. APK Anda harus ditandatangani agar login ke Play Game dapat berfungsi. Persyaratan ini tidak hanya berlaku untuk publikasi, tetapi juga selama pengembangan game.
Menyiapkan project Firebase Anda
Di Firebase console, buka project Firebase,
tempat Anda mendaftarkan proyek Unity Anda.
Tetapkan sidik jari SHA-1 game Anda dari
halaman SetelanFirebase console, menggunakan kunci yang ditetapkan di Unity.
Anda bisa mendapatkan sidik jari SHA-1 kunci Anda dengan perintah keytool:
Buat dan dapatkan client ID dan rahasia klien server web project Anda:
Dalam tab Sign in method, aktifkan penyedia login Google.
Salin client ID dan rahasia server web dari penyedia login Google.
Dalam tab Sign in method, aktifkan penyedia login Play Games, lalu tentukan client ID dan rahasia klien server web project yang Anda dapatkan pada langkah terakhir.
Mengonfigurasi Play Games services dengan informasi aplikasi Firebase Anda
Di bagian Grow, klik
Play Games services > Penyiapan & Pengelolaan > Konfigurasi.
Klik Ya, game saya sudah menggunakan Google API, pilih project Firebase Anda dari daftar, lalu klik Use.
Di halaman konfigurasi Play Games services, klik
Tambahkan Kredensial.
Pilih jenis Game server.
Di kolom OAuth client, pilih client ID web project Anda. Pastikan
ini adalah client ID yang sama dengan yang Anda tetapkan saat mengaktifkan
login dengan Play Games.
Simpan perubahan Anda.
Masih di halaman konfigurasi Play Games services, klik kembali
Tambahkan Kredensial.
Pilih jenis Android.
Di kolom OAuth client, pilih client ID Android project Anda.
(Jika client ID Android tidak muncul, pastikan Anda menyetel sidik jari SHA-1 game di Firebase console.)
Simpan perubahan Anda.
Di halaman Peristiwa, Pencapaian, dan Papan Peringkat, buatlah
resource Play Games yang ingin digunakan dengan game (jika tidak
ingin segera menggunakannya, Anda dapat membuat entri placeholder). Lalu, di salah satu
halaman Peristiwa, Pencapaian, atau Papan Peringkat, klik
Dapatkan resource dan salin cuplikan resource Android ke tempat
yang praktis. Anda memerlukan cuplikan tersebut untuk menyiapkan plugin
Google Play Games services.
Cuplikan resource terlihat seperti contoh berikut:
Impor package Unity plugin ke dalam project Unity Anda. Anda dapat menemukan paket Unity di direktori current-build arsip rilis.
Siapkan plugin Play Game:
Klik Window > Google Play Game > Penyiapan > Penyiapan Android untuk membuka layar Konfigurasi Android.
Tempel cuplikan resource Android yang didapatkan dari konsol Play ke
kolom Definisi Resource.
Tempel client ID server web, yang Anda berikan saat mengaktifkan
fitur login Play Game di Firebase console, ke kolom
Client ID.
Klik Penyiapan.
Di game Anda, konfigurasikan klien Play Game dengan setelan RequestServerAuthCode diaktifkan:
usingGooglePlayGames;usingGooglePlayGames.BasicApi;usingUnityEngine.SocialPlatforms;usingSystem.Threading.Tasks;PlayGamesClientConfigurationconfig=newPlayGamesClientConfiguration.Builder().RequestServerAuthCode(false/* Don't force refresh */).Build();PlayGamesPlatform.InitializeInstance(config);PlayGamesPlatform.Activate();
Lalu, saat pemain memilih untuk login dengan Play Game, panggil Social.localUser.Authenticate():
Social.localUser.Authenticate((boolsuccess)=>{// handle success or failure});
Melakukan Autentikasi dengan Firebase
Setelah Anda menambahkan fitur login Play Game ke game, Anda dapat menggunakan kode autentikasi dari layanan Play Game untuk melakukan autentikasi dengan Firebase.
Setelah pemain berhasil login menggunakan Play Game, di penangan kelanjutan login, dapatkan kode autentikasi untuk akun pemain:
Kemudian, tukarkan kode autentikasi dari layanan Play Game untuk mendapatkan kredensial Firebase, dan gunakan kredensial Firebase tersebut untuk mengautentikasi pemain:
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);});
Langkah berikutnya
Setelah pengguna login untuk pertama kalinya, akun pengguna baru akan dibuat dan terhubung ke ID Play Game miliknya. Akun baru ini disimpan sebagai bagian dari project Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam project.
Di game, Anda bisa mendapatkan UID Firebase pengguna dari objek 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;}
Di Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda bisa mendapatkan ID pengguna unik yang login dari variabel auth, dan menggunakannya untuk mengontrol data yang dapat diakses pengguna.
Untuk mendapatkan informasi pemain Play Game milik pengguna atau untuk mengakses layanan Play Game, gunakan API yang diberikan melalui plugin Play Game.
Untuk memproses logout pengguna, panggil SignOut():
[null,null,["Terakhir diperbarui pada 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();"]]