با استفاده از خدمات بازی های Google Play در Unity احراز هویت کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
میتوانید از سرویسهای «بازیهای Google Play» برای ورود بازیکنان به یک بازی اندروید ساختهشده بر روی Firebase و Unity استفاده کنید. برای استفاده از ورود به سیستم سرویسهای بازیهای Google Play با Firebase، ابتدا با بازیهای Google Play وارد بازیکن شوید و در صورت انجام این کار، کد تأیید OAuth 2.0 را درخواست کنید. سپس، کد احراز هویت را به PlayGamesAuthProvider ارسال کنید تا یک اعتبار Firebase ایجاد کند، که می توانید از آن برای احراز هویت با Firebase استفاده کنید.
در ویرایشگر یونیتی، در قسمت Build Settings > Player Settings > Other Settings نام بسته اندروید بازی خود را تنظیم کنید.
سپس، در بخش Build Settings > Player Settings > Publishing Settings ، یک keystore و key را انتخاب یا ایجاد کنید، که برای امضای بسته Android شما استفاده می شود. APK شما باید امضا شده باشد تا ورود به سیستم بازیهای Play کار کند—این شرط نه فقط برای انتشار، بلکه در طول توسعه بازی شما نیز اعمال میشود.
پروژه Firebase خود را راه اندازی کنید
در کنسول Firebase ، به پروژه Firebase بروید که در آن پروژه Unity خود را ثبت کرده اید.
با استفاده از کلیدی که در Unity تنظیم کرده اید، اثر انگشت SHA-1 بازی خود را از صفحه تنظیمات کنسول Firebase تنظیم کنید.
می توانید اثر انگشت SHA-1 کلید خود را با دستور keytool دریافت کنید:
شناسه سرویس گیرنده وب سرور و رمز سرویس گیرنده پروژه خود را ایجاد و به دست آورید:
در برگه روش ورود به سیستم ، ارائه دهنده ورود به سیستم Google را فعال کنید.
شناسه سرویس گیرنده وب سرور و راز را از ارائه دهنده ورود به سیستم Google کپی کنید.
در برگه روش ورود ، ارائهدهنده ورود Play Games را فعال کنید و شناسه سرویس گیرنده وب سرور پروژه خود و راز سرویس گیرنده را که در مرحله آخر دریافت کردید، مشخص کنید.
Play Games services با اطلاعات برنامه Firebase خود پیکربندی کنید
در کنسول Google Play ، برنامه Google Play خود را باز کنید یا یکی ایجاد کنید.
در بخش رشد ، روی Play Games services > راهاندازی و مدیریت > پیکربندی کلیک کنید.
روی بله، بازی من قبلاً از Google API استفاده میکند ، پروژه Firebase خود را از لیست انتخاب کنید و سپس روی استفاده کلیک کنید.
در صفحه پیکربندی Play Games services ، روی افزودن اعتبارنامه کلیک کنید.
نوع سرور بازی را انتخاب کنید.
در قسمت سرویس گیرنده OAuth ، شناسه مشتری وب پروژه خود را انتخاب کنید. مطمئن شوید که این همان شناسه مشتری است که هنگام فعال کردن ورود به Play Games مشخص کردهاید.
تغییرات خود را ذخیره کنید
هنوز در صفحه پیکربندی Play Games services ، دوباره روی افزودن اعتبارنامه کلیک کنید.
نوع اندروید را انتخاب کنید.
در قسمت سرویس گیرنده OAuth ، شناسه مشتری Android پروژه خود را انتخاب کنید. (اگر ID کلاینت اندروید خود را نمی بینید، مطمئن شوید که اثر انگشت SHA-1 بازی خود را در کنسول Firebase تنظیم کرده اید.)
تغییرات خود را ذخیره کنید
در صفحات رویدادها ، دستاوردها و تابلوهای امتیازات ، هر منبعی Play Games را که میخواهید با بازی خود استفاده کنید ایجاد کنید (اگر نمیخواهید فوراً از هیچ کدام استفاده کنید، میتوانید یک ورودی مکاننما ایجاد کنید). سپس، در هر یک از صفحات رویدادها ، دستاوردها ، یا تابلوهای امتیازات ، روی دریافت منابع کلیک کنید و قطعه منابع Android را در جایی مناسب کپی کنید. برای راهاندازی افزونه Google Play Games services به این قطعه نیاز دارید.
بسته Unity افزونه را به پروژه Unity خود وارد کنید. می توانید بسته Unity را در فهرست current-build آرشیو انتشار پیدا کنید.
پلاگین بازی های Play را راه اندازی کنید:
روی Window > Google Play Games > Setup > Android Setup کلیک کنید تا صفحه پیکربندی Android باز شود.
قطعه منابع Android را که از کنسول Play دریافت کردید در قسمت Resources Definition جایگذاری کنید.
شناسه سرویس گیرنده وب سرور خود را که هنگام فعال کردن ورود به سیستم بازیهای Play در کنسول Firebase ارائه کردهاید، در قسمت Client ID جایگذاری کنید.
روی Setup کلیک کنید.
در بازی خود، یک سرویس گیرنده Play Games را با تنظیم RequestServerAuthCode پیکربندی کنید:
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 او مرتبط میشود. این حساب جدید به عنوان بخشی از پروژه Firebase شما ذخیره میشود و میتواند برای شناسایی کاربر در هر برنامه در پروژه شما استفاده شود.
در بازی خود، می توانید UID Firebase کاربر را از شی 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;}
در قوانین امنیتی Firebase Realtime Database و Cloud Storage، میتوانید شناسه کاربری منحصر به فرد کاربر واردشده را از متغیر auth دریافت کنید و از آن برای کنترل دادههایی که کاربر میتواند به آن دسترسی داشته باشد استفاده کنید.
برای دریافت اطلاعات پخش کننده بازی های Play کاربر یا دسترسی به خدمات بازی های Play، از API های ارائه شده توسط افزونه بازی های Play استفاده کنید.
برای خروج از سیستم کاربر، SignOut() را فراخوانی کنید:
تاریخ آخرین بهروزرسانی 2025-08-15 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-08-15 بهوقت ساعت هماهنگ جهانی."],[],[],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();"]]