In Unity mit Google Play-Spieldiensten authentifizieren

Mit den Google Play Spiele-Diensten können Sie Spieler in einem Android-Spiel anmelden, das auf Firebase und Unity basiert. Wenn du die Google Play-Spieldienste verwenden möchtest, melde dich mit Firebase öffnen, melden Sie sich im Player mit Google Play Spiele an und fordern Sie OAuth 2.0-Authentifizierungscode an. Übergeben Sie dann den Autorisierungscode an PlayGamesAuthProvider zum Generieren von Firebase-Anmeldedaten, mit denen du sich bei Firebase zu authentifizieren.

Hinweis

Unity-Projekt einrichten

  1. Fügen Sie Ihrem Unity-Projekt die Firebase-Konfigurationsdatei und das Firebase Unity SDK hinzu wie in Fügen Sie Firebase zu Ihrem Unity-Projekt hinzu. Folgen Sie der Anleitung für Android.

    Achten Sie darauf, FirebaseAuth.unitypackage zu importieren.

  2. Gehen Sie im Unity Editor unter Build Settings > Player-Einstellungen > Sonstiges Einstellungen legen Sie den Android-Paketnamen Ihres Spiels fest.

  3. Gehen Sie dann zu Build Settings > Player-Einstellungen > Veröffentlichungseinstellungen Einen Schlüsselspeicher und einen Schlüssel auswählen oder erstellen, die zum Signieren Ihres Android-Geräts verwendet werden Paket. Damit die Anmeldung in Play Spiele funktioniert, muss dein APK signiert sein. nicht nur für die Veröffentlichung, sondern auch für die Entwicklung für Ihr Spiel.

Das Firebase-Projekt einrichten

  1. Rufen Sie in der Firebase-Konsole das Firebase-Projekt auf. bei dem Sie Ihr Unity-Projekt registriert haben.

  2. Legen Sie den SHA-1-Fingerabdruck Ihres Spiels über das Seite Einstellungen der Firebase-Konsole mit dem Schlüssel, den Sie in Unity festgelegt haben.

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

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

    Alternativ können Sie den SHA-Hash-Wert Ihres Signaturzertifikats mit der Gradle-Befehl signingReport:

    gradlew signingReport

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

  3. Google Play Games als Anmeldeanbieter aktivieren:

    1. Öffnen Sie in der Firebase-Konsole das Authentication.

    2. Generieren und abrufen Sie die Webserver-Client-ID und das Client-Secret Ihres Projekts:

      1. Aktivieren Sie auf dem Tab Anmeldemethode die Google-Anmeldung. Dienstanbieter.

      2. Kopieren Sie die Webserver-Client-ID und das Secret aus dem Google Log-in Dienstanbieter.

    3. Aktivieren Sie auf dem Tab Anmeldemethode die Option Play Games. und geben Sie die Webserver-Client-ID und Clientschlüssel, den Sie im letzten Schritt abgerufen haben.

Play Games services mit den Informationen Ihrer Firebase-App konfigurieren

  1. Im Google Play-Konsole, öffnen Sie die Google Play App oder erstellen Sie eine.

  2. Klicken Sie im Bereich Wachsen auf Play Games services > Einrichtung und Verwaltung > Konfiguration.

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

  4. Klicken Sie auf der Konfigurationsseite von Play Games services auf Anmeldedaten hinzufügen.

    1. Wählen Sie den Typ Gameserver aus.
    2. Wählen Sie im Feld OAuth-Client die Webclient-ID Ihres Projekts aus. Seien Dies ist dieselbe Client-ID, die Sie bei der Aktivierung Play Games-Anmeldung.
    3. Speichern Sie die Änderungen.
  5. Klicken Sie auf der Konfigurationsseite von Play Games services auf Füge die Anmeldedaten noch einmal hinzu.

    1. Wählen Sie als Typ Android aus.
    2. Wählen Sie im Feld OAuth-Client die Android-Client-ID Ihres Projekts aus. Wenn Ihre Android-Client-ID nicht angezeigt wird, achten Sie darauf, die SHA-1-Fingerabdruck in der Firebase-Konsole.)
    3. Speichern Sie die Änderungen.
  6. Erstellen Sie auf den Seiten Ereignisse, Erfolge und Bestenlisten Play Games Ressourcen, die du für dein Spiel verwenden möchtest (falls du sofort verwenden möchten, können Sie einen Platzhaltereintrag erstellen. Dann, am einer der Seiten Ereignisse, Erfolge oder Bestenlisten Ressourcen abrufen und das Android-Ressourcen-Snippet kopieren praktisch sein. Du benötigst das Snippet, um Google Play Games services einzurichten .

    Das Ressourcen-Snippet sieht so 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 Nutzer hinzu, die in Ihrem Spiel anmelden können, bevor Sie es Play Store

Play Spiele-Anmeldung in dein Spiel integrieren

  1. Laden Sie die neueste Version der Play Spiele-Plug-in für Unity und extrahieren sie.

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

  3. Play Spiele-Plug-in einrichten:

    1. Klicken Sie auf Fenster > Google Play Spiele > Einrichtung > Android-Einrichtung, um die Android-Konfiguration.
    2. Fügen Sie das Android-Ressourcen-Snippet, das Sie aus der Play Console erhalten haben, in das Feld Resources Definition (Ressourcendefinition) ein.
    3. Fügen Sie die Client-ID Ihres Webservers, die Sie bei der Aktivierung der Play Spiele-Anmeldung in der Firebase-Konsole angegeben haben, in das Feld Client-ID ein.
    4. Klicken Sie auf Einrichten.
  4. Konfiguriere in deinem Spiel einen Play Spiele-Client mit der RequestServerAuthCode aktivierte 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 Spiele anmeldet, ruft er Social.localUser.Authenticate():

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

Mit Firebase authentifizieren

Nachdem du deinem Spiel eine Play Spiele-Anmeldung hinzugefügt hast, kannst du den Autorisierungscode von Play-Spieldienste zur Authentifizierung bei Firebase.

  1. Nachdem sich der Spieler erfolgreich über Play Spiele angemeldet hat, Continuation-Handler, rufe einen Autorisierungscode für das Konto des Spielers ab:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Tauschen Sie dann den Authentifizierungscode aus den Play-Spieldiensten gegen Firebase-Anmeldedaten aus und authentifizieren Sie den Spieler mit den Firebase-Anmeldedaten:

    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    Firebase.Auth.Credential credential =
        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.AuthResult result = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          result.User.DisplayName, result.User.UserId);
    });
    

Nächste Schritte

Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und die mit ihrer Play Spiele-ID verknüpft ist. Dieses neue Konto wird als Teil deiner Firebase-Projekt erstellen und zur Identifizierung von Nutzern in jeder App in Ihrem Projekt arbeiten.

In Ihrem Spiel können Sie die Firebase-UID des Nutzers aus der Objekt Firebase.Auth.FirebaseUser:

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

Die Firebase Realtime Database und die Cloud Storage-Sicherheitsregeln enthalten folgende Informationen: Eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth und für folgende Aktionen verwenden: festlegen, auf welche Daten ein Nutzer zugreifen kann.

Um die Play Spiele-Spielerinformationen eines Nutzers zu erhalten oder auf die Play-Spieldienste zuzugreifen, Die vom Play Spiele-Plug-in bereitgestellten APIs verwenden

Um einen Nutzer abzumelden, rufen Sie SignOut() auf:

auth.SignOut();