קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
אפשר להשתמש ב-Google Play Games Services כדי להכניס שחקנים למשחק ל-Android
שמבוססים על Firebase ו-Unity. כדי להשתמש בכניסה לשירותי Google Play Games באמצעות Firebase, קודם צריך להיכנס לחשבון של השחקן באמצעות Google Play Games ולבקש קוד אימות מסוג OAuth 2.0. לאחר מכן, מעבירים את קוד האימות אל PlayGamesAuthProvider כדי ליצור פרטי כניסה ל-Firebase, שאפשר להשתמש בהם כדי לבצע אימות באמצעות Firebase.
לפני שמתחילים
הגדרת הפרויקט ב-Unity
מוסיפים את קובץ התצורה של Firebase ואת ה-SDK מסוג FirebaseUnity לפרויקט ב-Unity
כפי שמתואר
מוסיפים את Firebase לפרויקט Unity.
פועלים לפי ההוראות ל-Android.
חשוב לייבא את FirebaseAuth.unitypackage.
בעורך Unity, בקטע Build Settings (הגדרות build) > Player Settings (הגדרות נגן) > Other Settings (הגדרות אחרות), מגדירים את שם החבילה של המשחק ל-Android.
לאחר מכן, בקטע בניית הגדרות > הגדרות הנגן > הגדרות פרסום,
בחירה או יצירה של מאגר מפתחות ומפתח, שישמשו לחתימה על מכשיר ה-Android
חבילה. חבילת ה-APK צריכה להיות חתומה כדי שהכניסה ל-Play Games תפעל. הדרישה הזו חלה לא רק על פרסום המשחק, אלא גם במהלך הפיתוח שלו.
הגדרת פרויקט Firebase
במסוף Firebase, נכנסים לפרויקט Firebase
רשמתם את הפרויקט ב-Unity.
מגדירים את טביעת האצבע של המשחק ב-SHA-1 בדף Settings במסוף Firebase, באמצעות המפתח שהגדרתם ב-Unity.
אפשר לקבל את טביעת האצבע SHA-1 של המפתח באמצעות הפקודה keytool:
יוצרים ומקבלים את מזהה הלקוח ואת הסוד של שרת האינטרנט של הפרויקט:
בכרטיסייה שיטת כניסה, מפעילים את פרטי הכניסה של Google.
ספק.
מעתיקים את הסוד ומזהה הלקוח של שרת האינטרנט מהכניסה של Google.
ספק.
בכרטיסייה שיטת כניסה, מפעילים את האפשרות Play Games.
ספק הכניסה, ולציין את מזהה הלקוח של שרת האינטרנט של הפרויקט
סוד לקוח, שקיבלתם בשלב האחרון.
הגדרת Play Games services עם פרטי האפליקציה ב-Firebase
ב
מסוף Google Play,
אפשר לפתוח את אפליקציית Google Play או ליצור אפליקציה חדשה.
בקטע צמיחה לוחצים על
Play Games services > הגדרה ו ניהול > הגדרה.
לוחצים על כן, המשחק שלי כבר משתמש ב-Google APIs ובוחרים את Firebase
בפרויקט מהרשימה ואז לוחצים על Use.
בדף ההגדרות האישיות של Play Games services, לוחצים על
Add Credential (הוספת פרטי כניסה)
בוחרים את הסוג שרת משחקים.
בשדה לקוח OAuth, בוחרים את מזהה לקוח האינטרנט של הפרויקט. להיות
זהו אותו מזהה לקוח שציינתם כשהפעלתם את
כניסה של Play Games.
שומרים את השינויים.
עדיין בדף ההגדרה של Play Games services, לוחצים על
Add Credential (הוספת פרטי כניסה).
בוחרים בסוג Android.
בשדה OAuth client, בוחרים את מזהה הלקוח של הפרויקט ב-Android.
(אם מזהה הלקוח של Android לא מופיע, חשוב לוודא שהגדרתם את טביעת האצבע SHA-1 של המשחק במסוף Firebase).
שומרים את השינויים.
בדפים אירועים, הישגים ולוחות לידרבורד, יוצרים
Play Games משאבים שברצונך להשתמש בהם במשחק (אם לא
אם רוצים להשתמש בו באופן מיידי, אפשר ליצור רשומת placeholder). לאחר מכן, מפעילים
בכל אחד מהדפים אירועים, הישגים או לוחות לידרבורד, לוחצים
קבלת מקורות מידע והעתקה של קטע הקוד של משאבי Android למקום כלשהו
נוח. תצטרכו את קטע הקוד כדי להגדיר את הפלאגין Google Play Games services.
מייבאים את חבילת Unity של הפלאגין לפרויקט ב-Unity. אפשר למצוא
חבילת Unity בספרייה current-build של ארכיון הגרסאות.
מגדירים את הפלאגין של Play Games:
לוחצים על חלון > Google Play Games > הגדרה > הגדרת Android כדי לפתוח את המסך הגדרת Android.
מדביקים את קטע הקוד של משאבי Android שקיבלתם מ-Play Console לתוך
השדה Resource Definition.
מדביקים את מזהה הלקוח של שרת האינטרנט, שסיפקתם כשהפעלתם את ההתחברות ל-Play Games במסוף 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 Games, מבצעים שיחה
Social.localUser.Authenticate():
Social.localUser.Authenticate((boolsuccess)=>{// handle success or failure});
אימות באמצעות Firebase
אחרי שמוסיפים את הכניסה ל-Play Games למשחק, אפשר להשתמש בקוד ההרשאה של
Play Games Services לאימות באמצעות Firebase.
אחרי שהשחקן נכנס לחשבון באמצעות Play Games, כניסה לחשבון
handler המשך, קבלת קוד הרשאה לחשבון השחקן:
לאחר מכן, צריך להחליף את קוד ההרשאה מ-Play Games Services ב-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 Games. החשבון החדש הזה מאוחסן כחלק מפרויקט 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 וכללי אבטחה של Cloud Storage, אפשר לקבל
מזהה המשתמש הייחודי של המשתמש המחובר מהמשתנה auth, ולהשתמש בו כדי
לקבוע לאילו נתונים המשתמש יכול לגשת.
כדי לקבל את פרטי הנגן של המשתמש ב-Play Games או כדי לגשת לשירותי Play Games:
להשתמש בממשקי ה-API שסופקו על ידי הפלאגין של Play Games.
[[["התוכן קל להבנה","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 (שעון 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();"]]