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

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

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

הגדר את אחדות

  1. מוסיפים את הקובץ config Firebase ואת SDK האחדות Firebase לפרויקט האחדות שלך כמתואר הוסף Firebase לפרויקט האחדות שלך . עקוב אחר ההוראות עבור Android.

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

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

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

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

  1. בשנות ה קונסולת Firebase , ללכת הפרויקט Firebase שבה רשמת פרויקט האחדות שלך.

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

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

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

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

    gradlew signingReport

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

  3. הפעל את Google Play משחקים כספק כניסה:

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

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

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

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

  1. בשנות ה קונסולת Play Google , לפתוח את האפליקציה או ליצור אחד.

  2. במקטע לגדול, לחץ לשחק משחקי שירותים> Setup & Management> Configuration.

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

  4. בדף תצורת שירותי משחקי Play, לחץ על הוספת אישורים.

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

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

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

  3. הגדר את התוסף Play משחקים:

    1. לחץ Window> Google Play משחקים> Setup> Setup Android כדי לפתוח את מסך תצורת אנדרואיד.
    2. הדבק את משאבי אנדרואיד קטע שקבלת ממסוף Play לתחום הגדרת המשאבים.
    3. דבק מזהה לקוח לשרת האינטרנט שלך, אשר שספק כשההפעלה לשחק משחקי כניסה במסוף Firebase, אלי השדה מזהה לקוח.
    4. לחץ על הגדרה.
  4. במשחק שלך, להגדיר לקוח משחקים לשחק עם 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 משחקים, קורא Social.localUser.Authenticate() :

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

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

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

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

    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 שלך, וניתן להשתמש בו כדי לזהות משתמש בכל אפליקציה בפרויקט שלך.

במשחק שלך, אתה יכול לקבל את UID Firebase של המשתמש מן 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 שלך לאחסון בענן אבטחה חוקי, אתה יכול לקבל את שנכנסים למערכת זיהוי המשתמש הייחודי של המשתמש מן auth משתנה, ולהשתמש בו כדי לקבוע אילו נתונים גישה יכול משתמש.

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

כדי לצאת מהחשבון משתמש, קוראים SignOut() :

auth.SignOut();