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

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

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

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

  1. אם לא עשית זאת עדיין, להוסיף Firebase לפרויקט Android שלך .

  2. באמצעות BOM אנדרואיד Firebase , להכריז על התלות של הספרייה אנדרואיד אימות Firebase במודול שלך (ברמת האפליקציה) קובץ Gradle (בדרך כלל app/build.gradle ).

    כמו כן, כחלק מהגדרת אימות Firebase, עליך להוסיף את ה-SDK של שירותי Google Play לאפליקציה שלך.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.3')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth'
    // Also declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:20.0.1'
    }

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר לא להשתמש ב-Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth:21.0.1'
    // Also declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:20.0.1'
    }

    קוטלין+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.3')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx'
    // Also declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:20.0.1'
    }

    באמצעות Firebase אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד Firebase.

    (אלטרנטיבי) הצהר תלות הספרייה Firebase ללא שימוש BOM

    אם תבחר לא להשתמש ב-Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש בספריות Firebase מרובים באפליקציה, אנו ממליצים בחום להשתמש בתמונה BOM לנהל גרסאות הספרייה, אשר מבטיח כי כל הגרסאות תואמות.

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'
    // Also declare the dependency for the Google Play services library and specify its version implementation 'com.google.android.gms:play-services-auth:20.0.1'
    }

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

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

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

    ./gradlew signingReport

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

    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. בדף בודקי, להוסיף את כתובות הדוא"ל של כל המשתמשים שצריכים להיות מסוגל להיכנס אל המשחק שלך לפני שאתה משחרר אותו בחנות Play.

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

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

האינטגרציה שלך, כשאתה לבנות את GoogleSignInOptions האובייקט, להשתמש DEFAULT_GAMES_SIGN_IN תצורת השיחה requestServerAuthCode :

Java

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
        .requestServerAuthCode(getString(R.string.default_web_client_id))
        .build();

קוטלין+KTX

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
        .requestServerAuthCode(getString(R.string.default_web_client_id))
        .build()

אתה חייב לעבור זיהוי הלקוח לשרת האינטרנט שלך requestServerAuthCode השיטה. זהו המזהה שסיפקת כשהפעלת את הכניסה ל-Play Games במסוף Firebase.

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

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

  1. ראשית, ב שלך הכניסה של פעילות onCreate השיטה, לקבל את המופע המשותף של FirebaseAuth האובייקט:

Java

private FirebaseAuth mAuth;
// ...
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();

קוטלין+KTX

private lateinit var auth: FirebaseAuth
// ...
// Initialize Firebase Auth
auth = Firebase.auth
  1. בעת אתחול הפעילות שלך, בדוק אם הנגן כבר מחובר עם Firebase:

Java

@Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseUser currentUser = mAuth.getCurrentUser();
    updateUI(currentUser);
}

קוטלין+KTX

override fun onStart() {
    super.onStart()
    // Check if user is signed in (non-null) and update UI accordingly.
    val currentUser = auth.currentUser
    updateUI(currentUser)
}
If the player isn't signed in, present the player with your game's
signed-out experience, including the option to sign in.
  1. אחרי סימנים שחקן עם משחק משחקים או בשקט או אינטראקטיבי, לקבל את קוד אימות מן GoogleSignInAccount אובייקט, להחליף אותו עבור אישור Firebase, ולאמת עם Firebase באמצעות אישורים Firebase:

Java

// Call this both in the silent sign-in task's OnCompleteListener and in the
// Activity's onActivityResult handler.
private void firebaseAuthWithPlayGames(GoogleSignInAccount acct) {
    Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.getId());

    final FirebaseAuth auth = FirebaseAuth.getInstance();
    AuthCredential credential = PlayGamesAuthProvider.getCredential(acct.getServerAuthCode());
    auth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = auth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        Toast.makeText(MainActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }

                    // ...
                }
            });
}

קוטלין+KTX

// Call this both in the silent sign-in task's OnCompleteListener and in the
// Activity's onActivityResult handler.
private fun firebaseAuthWithPlayGames(acct: GoogleSignInAccount) {
    Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.id!!)

    val auth = Firebase.auth
    val credential = PlayGamesAuthProvider.getCredential(acct.serverAuthCode!!)
    auth.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInWithCredential:success")
                    val user = auth.currentUser
                    updateUI(user)
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithCredential:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }

                // ...
            }
}

אם הקריאה signInWithCredential מצליח אתה יכול להשתמש getCurrentUser שיטה כדי לקבל את נתוני החשבון של המשתמש.

הצעדים הבאים

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

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

Java

FirebaseUser user = mAuth.getCurrentUser();
String playerName = user.getDisplayName();

// 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 FirebaseUser.getIdToken() instead.
String uid = user.getUid();

קוטלין+KTX

val user = auth.currentUser
user?.let {
    val 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 FirebaseUser.getIdToken() instead.
    val uid = user.uid
}

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

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

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

Java

FirebaseAuth.getInstance().signOut();

קוטלין+KTX

Firebase.auth.signOut()