Check out what’s new from Firebase at Google I/O 2022. Learn more

אימות באחדות באמצעות שירותי המשחקים של Google Play

אתה יכול להשתמש בשירותי Google Play Games כדי להיכנס שחקנים למשחק אנדרואיד שנבנה על Firebase ו-Unity. כדי להשתמש בשירותי Google Play Games היכנס עם Firebase, תחילה היכנס לנגן באמצעות Google Play Games, ובקש קוד אישור OAuth 2.0 כאשר תעשה זאת. לאחר מכן, העבר את קוד האימות ל- PlayGamesAuthProvider כדי ליצור אישור Firebase, שבו תוכל להשתמש כדי לאמת עם Firebase.

לפני שאתה מתחיל

הגדר את פרויקט Unity שלך

  1. הוסף את קובץ התצורה של Firebase ואת Firebase Unity SDK לפרויקט Unity שלך, כפי שמתואר בהוספת Firebase לפרויקט Unity שלך . עקוב אחר ההוראות עבור אנדרואיד.

    הקפד לייבא את FirebaseAuth.unitypackage .

  2. בעורך Unity, תחת הגדרות בנייה > הגדרות נגן > הגדרות אחרות הגדר את שם החבילה של אנדרואיד של המשחק שלך.

  3. לאחר מכן, תחת הגדרות בנייה > הגדרות נגן > הגדרות פרסום , בחר או צור מאגר מפתחות ומפתח, שישמשו לחתימה על חבילת האנדרואיד שלך. ה-APK שלך חייב להיות חתום כדי שהכניסה ל-Play Games תעבוד - דרישה זו חלה לא רק על פרסום, אלא גם במהלך פיתוח המשחק שלך.

הגדר את פרויקט Firebase שלך

  1. במסוף Firebase , עבור לפרויקט Firebase שבו רשמת את פרוייקט Unity שלך.

  2. הגדר את טביעת האצבע SHA-1 של המשחק שלך מדף ההגדרות של קונסולת Firebase, באמצעות המפתח שהגדרת ב- Unity.

    אתה יכול לקבל את טביעת האצבע SHA-1 של המפתח שלך עם הפקודה keytool :

    keytool -exportcert -list -v \
        -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE

    לחלופין, אתה יכול לקבל את ה-Hash SHA של תעודת החתימה שלך עם הפקודה signingReport :

    gradlew signingReport

    ה-APK שלך חייב להיות חתום עם מפתח זה, כולל במהלך הפיתוח.

  3. הפעל את Google Play Games כספק כניסה:

    1. מצא את מזהה הלקוח של שרת האינטרנט ואת סוד הלקוח של הפרויקט שלך. מזהה הלקוח של שרת האינטרנט מזהה את פרויקט Firebase שלך ​​לשרתי האימות של Google Play.

      כדי למצוא את הערכים האלה:

      1. פתח את פרויקט Firebase שלך ​​בדף האישורים של מסוף Google APIs .
      2. בקטע מזהי לקוח OAuth 2.0 , פתח את דף הפרטים של לקוח האינטרנט (נוצר אוטומטית על ידי שירות Google) . דף זה מפרט את מזהה הלקוח והסוד של שרת האינטרנט שלך.
    2. לאחר מכן, במסוף Firebase , פתח את הקטע אימות .

    3. בכרטיסייה שיטת כניסה , הפעל את ספק הכניסה ל- Play Games . יהיה עליך לציין את מזהה הלקוח של שרת האינטרנט ואת סוד הלקוח, שקיבלת ממסוף ה-API.

הגדר את שירותי Play Games עם פרטי אפליקציית Firebase שלך

  1. ב- Google Play Console , פתח את אפליקציית Google Play שלך או צור אחת.

  2. בקטע ' גדל ', לחץ על שירותי הפעלה של משחקים > הגדרה וניהול > תצורה .

  3. לחץ על כן, המשחק שלי כבר משתמש בממשקי API של Google , בחר בפרויקט Firebase שלך ​​מהרשימה ולאחר מכן לחץ על השתמש .

  4. בדף התצורה של שירותי Play Games, לחץ על הוסף פרטי כניסה .

    1. בחר את סוג שרת המשחק .
    2. בשדה לקוח OAuth , בחר את מזהה לקוח האינטרנט של הפרויקט שלך. ודא שזהו אותו מזהה לקוח שציינת כאשר הפעלת את הכניסה ל-Play משחקים.
    3. שמור את השינויים שלך.
  5. עדיין בדף התצורה של שירותי Play Games, לחץ שוב על הוסף אישורים .

    1. בחר את סוג האנדרואיד .
    2. בשדה לקוח OAuth , בחר את מזהה לקוח Android של הפרויקט שלך. (אם אינך רואה את מזהה לקוח Android שלך, הקפד להגדיר את טביעת האצבע SHA-1 של המשחק שלך בקונסולת Firebase.)
    3. שמור את השינויים שלך.
  6. בדפי אירועים , הישגים וטבלאות הישגים, צור כל משאב של Play Games שתרצה להשתמש בו עם המשחק שלך (אם אינך רוצה להשתמש במשאבים מיידיים, תוכל ליצור ערך מציין מיקום). לאחר מכן, בכל אחד מדפי אירועים , הישגים או Leaderboards , לחץ על קבל משאבים והעתק את קטע המשאבים של Android למקום נוח. תזדקק לקטע הקוד כדי להגדיר את הפלאגין שירותי Google Play משחקים.

    קטע המשאבים נראה כמו הדוגמה הבאה:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    Google Play game services IDs.
    Save this file as res/values/games-ids.xml in your project.
    -->
    <resources>
      <!-- app_id -->
      <string name="app_id" translatable="false">123456789000</string>
      <!-- package_name -->
      <string name="package_name" translatable="false">com.example.game</string>
      <!-- event Wiped Raid -->
      <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string>
    </resources>
    
  7. בדף הבודקים , הוסף את כתובות האימייל של המשתמשים שצריכים להיות מסוגלים להיכנס למשחק שלך לפני שתשחרר אותו בחנות Play.

שלב כניסה של Play Games לתוך המשחק שלך

  1. הורד את המהדורה האחרונה של תוסף Play Games עבור Unity וחלץ אותו.

  2. ייבא את חבילת Unity של התוסף לפרויקט Unity שלך. אתה יכול למצוא את חבילת Unity בספריית current-build של ארכיון ההפצות.

  3. הגדר את הפלאגין של Play Games:

    1. לחץ על חלון > Google Play משחקים > הגדרה > הגדרת אנדרואיד כדי לפתוח את מסך תצורת Android .
    2. הדבק את קטע המשאבים של Android שקיבלת ממסוף Play בשדה הגדרת משאבים .
    3. הדבק את מזהה הלקוח של שרת האינטרנט שלך, שסיפקת כאשר הפעלת את הכניסה ל-Play Games במסוף Firebase, בשדה Client ID .
    4. לחץ על הגדרה .
  4. במשחק שלך, הגדר לקוח Play Games כאשר ההגדרה RequestServerAuthCode מופעלת:

    using GooglePlayGames;
    using GooglePlayGames.BasicApi;
    using UnityEngine.SocialPlatforms;
    using System.Threading.Tasks;
    
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
        .RequestServerAuthCode(false /* Don't force refresh */)
        .Build();
    
    PlayGamesPlatform.InitializeInstance(config);
    PlayGamesPlatform.Activate();
    
  5. לאחר מכן, כאשר שחקן בוחר להיכנס באמצעות Play Games, התקשר Social.localUser.Authenticate() :

    Social.localUser.Authenticate((bool success) => {
      // handle success or failure
    });
    

בצע אימות באמצעות Firebase

לאחר הוספת כניסה של Play Games למשחק, תוכל להשתמש בקוד האימות משירותי Play Games כדי לבצע אימות עם Firebase.

  1. לאחר שהשחקן נכנס בהצלחה באמצעות Play Games, במטפל המשך הכניסה, קבל קוד אימות לחשבון השחקן:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. לאחר מכן, החלף את קוד ההרשאה משירותי Play Games עבור אישור Firebase, והשתמש באישור Firebase כדי לאמת את הנגן:

    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    Firebase.Auth.Credential credential =
        Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

הצעדים הבאים

לאחר שמשתמש נכנס בפעם הראשונה, חשבון משתמש חדש נוצר ומקושר למזהה Play Games שלו. החשבון החדש הזה מאוחסן כחלק מפרויקט Firebase שלך, וניתן להשתמש בו כדי לזהות משתמש בכל אפליקציה בפרויקט שלך.

במשחק שלך, אתה יכול לקבל את Firebase UID של המשתמש מהאובייקט Firebase.Auth.FirebaseUser :

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  string playerName = 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.
  string uid = user.UserId;
}

בכללי האבטחה שלך במסד הנתונים בזמן אמת של Firebase וב-Cloud Storage, אתה יכול לקבל את מזהה המשתמש הייחודי של המשתמש auth ממשתנה האימות, ולהשתמש בו כדי לשלוט לאילו נתונים המשתמש יכול לגשת.

כדי לקבל מידע על נגן Play משחקים של משתמש או כדי לגשת לשירותי Play Games, השתמש בממשקי ה-API שמסופקים על ידי הפלאגין של Play Games.

כדי לצאת ממשתמש, התקשר ל- SignOut() :

auth.SignOut();