المصادقة في Unity باستخدام "خدمات ألعاب Google Play"
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكنك استخدام "خدمات ألعاب Google Play" لتسجيل دخول اللاعبين إلى لعبة Android.
التي تم إنشاؤها على Firebase وUnity. لاستخدام "خدمات ألعاب Google Play"، يُرجى تسجيل الدخول باستخدام
لمنصة Firebase، وتسجيل الدخول أولاً إلى اللاعب باستخدام "ألعاب Google Play" وطلب
رمز مصادقة OAuth 2.0 عند إجراء ذلك. بعد ذلك، أدخِل رمز المصادقة إلى
PlayGamesAuthProvider لإنشاء بيانات اعتماد لمنصة Firebase، والتي يمكنك استخدامها
بالمصادقة مع Firebase.
قبل البدء
إعداد مشروع Unity
أضِف ملف إعدادات Firebase وحزمة تطوير البرامج (SDK) لنظام التشغيل FirebaseUnity إلى مشروعك على Unity.
كما هو موضح في
أضِف منصّة Firebase إلى مشروع Unity.
اتّبِع التعليمات الخاصة بنظام التشغيل Android.
تأكَّد من استيراد FirebaseAuth.unitypackage.
في Unity Editor (محرِّر Unity)، ضمن Build Settings (إعدادات الإنشاء) > إعدادات المشغّل > مشاكل أخرى
"الإعدادات" تتيح ضبط اسم حزمة Android للعبتك.
بعد ذلك، ضمن إنشاء الإعدادات > إعدادات المشغّل > Publishing Settings (إعدادات النشر)
اختيار أو إنشاء ملف تخزين مفاتيح ومفتاح، يمكن استخدامهما لتوقيع ملف
طرد. يجب توقيع ملف APK لكي يتم تسجيل الدخول إلى "ألعاب Play" لكي يتم تسجيل الدخول إلى تطبيق "ألعاب Play".
لا ينطبق على النشر فحسب، إنما أيضًا خلال تطوير
لعبتك.
إنشاء والحصول على معرّف عميل وعميل خادم الويب لمشروعك
السر:
ضمن علامة التبويب طريقة تسجيل الدخول، فعِّل تسجيل الدخول بـ Google
المستخدم.
نسخ معرِّف العميل وسر العميل لخادم الويب من عملية تسجيل الدخول على Google
المستخدم.
في علامة التبويب طريقة تسجيل الدخول، فعِّل Play Games.
لتسجيل الدخول، وحدد معرِّف عميل خادم الويب لمشروعك
سر العميل، الذي حصلت عليه في الخطوة الأخيرة.
إعداد Play Games services باستخدام معلومات تطبيقك على Firebase
في جلسة المعمل،
وحدة تحكُّم Google Play
يُرْجَى فَتْحْ تَطْبِيقْ Google Play أَوْ إِنْشَاءْ تَطْبِيقْ.
في قسم النمو، انقر على
Play Games services > الإعداد الإدارة > الإعدادات.
انقر على نعم، لعبتي تستخدم Google APIs، واختَر Firebase.
مشروعك من القائمة، ثم انقر على استخدام.
في صفحة إعداد "Play Games services"، انقر على
إضافة بيانات اعتماد
اختَر النوع خادم الألعاب.
في الحقل عميل OAuth، اختَر معرِّف عميل الويب لمشروعك. كن
تأكَّد من أنّ هذا هو معرِّف العميل نفسه الذي حدّدته عند التفعيل
تسجيل الدخول باستخدام حساب Play Games
احفظ التغييرات.
إذا كنت لا تزال في صفحة إعداد Play Games services، انقر على
عليك إضافة بيانات الاعتماد مرة أخرى.
اختَر نوع جهاز Android.
في الحقل عميل OAuth، اختَر معرِّف عميل Android لمشروعك.
(إذا لم يظهر لك معرِّف عميل Android، يُرجى التأكد من ضبط
بصمة إصبع SHA-1 في وحدة تحكّم Firebase).
احفظ التغييرات.
في صفحات الأحداث والإنجازات ولوحات الصدارة، أنشئ أي
Play Games من الموارد التي تريد استخدامها في لعبتك (إذا لم يكن لديك
تريد استخدامها على الفور، فيمكنك إنشاء إدخال عنصر نائب). بعد ذلك، في
أي من صفحات الأحداث أو الإنجازات أو لوحات الصدارة، انقر على
الحصول على الموارد ونسخ مقتطف موارد Android إلى مكان ما
مناسب. ستحتاج إلى المقتطف لإعداد Google Play Games services.
المكون الإضافي.
استورِد حزمة Unity الخاصة بالمكوّن الإضافي إلى مشروع Unity. يمكنك العثور على
حزمة Unity في دليل current-build لأرشيف الإصدارات.
إعداد المكوّن الإضافي لتطبيق "ألعاب Play":
انقر على النافذة >. ألعاب Google Play > الإعداد > إعداد Android لفتح
تهيئة Android.
ألصِق مقتطف موارد Android الذي حصلت عليه من Play Console في
الحقل تعريف الموارد.
ألصِق معرِّف عميل خادم الويب، الذي قدّمته عند تفعيل الميزة.
تسجيل الدخول إلى "ألعاب Play" ضمن "وحدة تحكُّم Firebase" إلى Client-ID
.
انقر على إعداد.
يجب ضبط برنامج "ألعاب Play" في لعبتك باستخدام 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 للمستخدم من
كائن 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 في الوقت الفعلي" و"قواعد أمان Cloud Storage"، يمكنك الحصول على
رقم تعريف المستخدِم الفريد الخاص بالمستخدم الذي سجّل الدخول من المتغيّر auth واستخدامه
للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.
للحصول على معلومات عن اللاعب على "ألعاب Play" أو الوصول إلى "خدمات ألعاب Play"، يجب اتّباع الخطوات التالية:
استخدام واجهات برمجة التطبيقات التي يوفّرها المكوّن الإضافي "ألعاب Play".
لتسجيل خروج مستخدم، يُرجى الاتصال بالرقم SignOut():
تاريخ التعديل الأخير: 2025-08-16 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-16 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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();"]]