Authentifizieren Sie sich in Unity mit Google Play Games Services

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Sie können Google Play Games-Dienste verwenden, um Spieler bei einem Android-Spiel anzumelden, das auf Firebase und Unity basiert. Um die Google Play Games-Dienste zu verwenden, melden Sie sich mit Firebase an, melden Sie sich zuerst mit dem Player bei Google Play Games an und fordern Sie dabei einen OAuth 2.0-Authentifizierungscode an. Übergeben Sie dann den Authentifizierungscode an PlayGamesAuthProvider , um Firebase-Anmeldeinformationen zu generieren, mit denen Sie sich bei Firebase authentifizieren können.

Bevor Sie beginnen

Richten Sie Ihr Unity-Projekt ein

  1. Fügen Sie die Firebase-Konfigurationsdatei und das Firebase Unity SDK zu Ihrem Unity-Projekt hinzu, wie unter Hinzufügen von Firebase zu Ihrem Unity-Projekt beschrieben. Befolgen Sie die Anweisungen für Android.

    Achten Sie darauf, FirebaseAuth.unitypackage zu importieren.

  2. Legen Sie im Unity-Editor unter Build-Einstellungen > Player-Einstellungen > Andere Einstellungen den Android-Paketnamen Ihres Spiels fest.

  3. Wählen oder erstellen Sie dann unter Build-Einstellungen > Player-Einstellungen > Veröffentlichungseinstellungen einen Schlüsselspeicher und Schlüssel, die zum Signieren Ihres Android-Pakets verwendet werden. Ihr APK muss signiert sein, damit die Anmeldung bei Play Games funktioniert. Diese Anforderung gilt nicht nur für die Veröffentlichung, sondern auch während der Entwicklung Ihres Spiels.

Richten Sie Ihr Firebase-Projekt ein

  1. Wechseln Sie in der Firebase-Konsole zu dem Firebase-Projekt, in dem Sie Ihr Unity-Projekt registriert haben.

  2. Legen Sie den SHA-1-Fingerabdruck Ihres Spiels auf der Seite „ Einstellungen “ der Firebase-Konsole fest, indem Sie den Schlüssel verwenden, den Sie in Unity festgelegt haben.

    Sie können den SHA-1-Fingerabdruck Ihres Schlüssels mit dem keytool -Befehl abrufen:

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

    Alternativ können Sie den SHA-Hash Ihres Signaturzertifikats mit dem Befehl signingReport signingReport abrufen:

    gradlew signingReport

    Ihr APK muss mit diesem Schlüssel signiert werden, auch während der Entwicklung.

  3. Aktivieren Sie Google Play Games als Anmeldeanbieter:

    1. Finden Sie die Webserver-Client-ID und das Client-Geheimnis Ihres Projekts. Die Webserver-Client-ID identifiziert Ihr Firebase-Projekt gegenüber den Google Play-Authentifizierungsservern.

      So finden Sie diese Werte:

      1. Öffnen Sie Ihr Firebase-Projekt auf der Anmeldeseite der Google APIs-Konsole .
      2. Öffnen Sie im Abschnitt OAuth 2.0-Client-IDs die Detailseite des Webclients (automatisch vom Google-Dienst erstellt) . Diese Seite listet Ihre Webserver-Client-ID und Ihr Geheimnis auf.
    2. Öffnen Sie dann in der Firebase-Konsole den Abschnitt Authentifizierung .

    3. Aktivieren Sie auf der Registerkarte Anmeldemethode den Play Spiele - Anmeldeanbieter . Sie müssen die Webserver-Client-ID und das Clientgeheimnis Ihres Projekts angeben, die Sie von der APIs-Konsole erhalten haben.

Konfigurieren Sie Play Games-Dienste mit Ihren Firebase-App-Informationen

  1. Öffnen Sie in der Google Play Console Ihre Google Play App oder erstellen Sie eine.

  2. Klicken Sie im Abschnitt Erweitern auf Play Games-Dienste > Einrichtung und Verwaltung > Konfiguration .

  3. Klicken Sie auf Ja, mein Spiel verwendet bereits Google-APIs , wählen Sie Ihr Firebase-Projekt aus der Liste aus und klicken Sie dann auf Verwenden .

  4. Klicken Sie auf der Konfigurationsseite der Play Games-Dienste auf Anmeldedaten hinzufügen .

    1. Wählen Sie den Spielservertyp aus .
    2. Wählen Sie im Feld OAuth-Client die Web-Client-ID Ihres Projekts aus. Stellen Sie sicher, dass dies die gleiche Client-ID ist, die Sie bei der Aktivierung der Play Games-Anmeldung angegeben haben.
    3. Speichern Sie Ihre Änderungen.
  5. Klicken Sie auf der Konfigurationsseite der Play Games-Dienste erneut auf Anmeldedaten hinzufügen .

    1. Wählen Sie den Android -Typ aus.
    2. Wählen Sie im Feld OAuth-Client die Android-Client-ID Ihres Projekts aus. (Wenn Sie Ihre Android-Client-ID nicht sehen, achten Sie darauf, den SHA-1-Fingerabdruck Ihres Spiels in der Firebase-Konsole festzulegen.)
    3. Speichern Sie Ihre Änderungen.
  6. Erstellen Sie auf den Seiten „ Events “ , „ Erfolge “ und „ Bestenlisten “ alle Play Spiele-Ressourcen, die Sie mit Ihrem Spiel verwenden möchten (wenn Sie keine sofort verwenden möchten, können Sie einen Platzhaltereintrag erstellen). Klicken Sie dann auf einer der Seiten Events , Achievements oder Leaderboards auf Ressourcen abrufen und kopieren Sie das Android-Ressourcen-Snippet an einen geeigneten Ort. Sie benötigen das Snippet, um das Plug-in für die Google Play Games-Dienste einzurichten.

    Das Ressourcen-Snippet sieht wie im folgenden Beispiel aus:

    <?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. Fügen Sie auf der Seite Tester die E-Mail-Adressen aller Benutzer hinzu, die sich bei Ihrem Spiel anmelden können müssen, bevor Sie es im Play Store veröffentlichen.

Integrieren Sie die Play Games-Anmeldung in Ihr Spiel

  1. Laden Sie die neueste Version des Play Games-Plug-ins für Unity herunter und extrahieren Sie sie.

  2. Importieren Sie das Unity-Paket des Plugins in Ihr Unity-Projekt. Sie finden das Unity-Paket im current-build Verzeichnis des Release-Archivs.

  3. Richten Sie das Play Games-Plug-in ein:

    1. Klicken Sie auf Windows > Google Play Games > Setup > Android Setup , um den Android-Konfigurationsbildschirm zu öffnen.
    2. Fügen Sie das Android-Ressourcen-Snippet, das Sie von der Play-Konsole erhalten haben, in das Feld Ressourcendefinition ein.
    3. Fügen Sie Ihre Webserver-Client-ID, die Sie bei der Aktivierung der Play Games-Anmeldung in der Firebase-Konsole angegeben haben, in das Feld „ Client-ID “ ein.
    4. Klicken Sie auf Einrichten .
  4. Konfigurieren Sie in Ihrem Spiel einen Play Games-Client mit RequestServerAuthCode Einstellung:

    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. Wenn sich ein Spieler dann bei Play Games anmeldet, rufen Social.localUser.Authenticate() :

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

Authentifizieren Sie sich mit Firebase

Nachdem Sie die Play Games-Anmeldung zu Ihrem Spiel hinzugefügt haben, können Sie den Authentifizierungscode der Play Games-Dienste verwenden, um sich bei Firebase zu authentifizieren.

  1. Nachdem sich der Spieler erfolgreich über Play Games angemeldet hat, rufen Sie im Anmeldefortsetzungs-Handler einen Authentifizierungscode für das Konto des Spielers ab:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Tauschen Sie dann den Authentifizierungscode von Play Games-Diensten gegen Firebase-Anmeldedaten aus und verwenden Sie die Firebase-Anmeldedaten, um den Spieler zu authentifizieren:

    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);
    });
    

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal angemeldet hat, wird ein neues Benutzerkonto erstellt und mit seiner Play Games-ID verknüpft. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Benutzer in jeder App in Ihrem Projekt zu identifizieren.

In Ihrem Spiel können Sie die Firebase-UID des Benutzers aus dem Firebase.Auth.FirebaseUser -Objekt abrufen:

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;
}

In Ihren Firebase-Echtzeitdatenbank- und Cloudspeicher-Sicherheitsregeln können Sie die eindeutige Benutzer-ID des angemeldeten Benutzers aus der auth -Variable abrufen und damit steuern, auf welche Daten ein Benutzer zugreifen kann.

Um die Play Games-Spielerinformationen eines Nutzers abzurufen oder auf Play Games-Dienste zuzugreifen, verwenden Sie die vom Play Games-Plug-in bereitgestellten APIs.

Um einen Benutzer abzumelden, rufen SignOut() :

auth.SignOut();