Authentifizieren Sie sich in Unity mit den Google Play Games Services

Sie können die Google Play Games-Dienste verwenden, um Spieler bei einem Android-Spiel anzumelden, das auf Firebase und Unity basiert. Um die Anmeldung bei den Google Play Games-Diensten mit Firebase zu verwenden, melden Sie sich zuerst beim Player mit Google Play Games an und fordern Sie dabei einen OAuth 2.0-Authentifizierungscode an. Dann übergeben Sie den Auth - Code zu PlayGamesAuthProvider eine Firebase Berechtigungsnachweis zu generieren, die Sie mit Firebase authentifizieren können.

Bevor Sie beginnen

Unity einrichten

  1. Fügen Sie die Firebase - Konfigurationsdatei und die Firebase Unity SDK zu Ihrem Unity - Projekt , wie beschrieben Add Firebase zu Ihrem Unity - Projekt . Folgen Sie den Anweisungen für Android.

    Achten Sie darauf , importieren FirebaseAuth.unitypackage .

  2. Im Unity - Editor unter Build - Einstellungen> Player - Einstellungen> Weitere Einstellungen legen Sie die Android Paketnamen Ihres Spiels.

  3. Klicken Sie dann unter Build - Einstellungen> Player - Einstellungen> Publishing - Einstellungen wählen oder einen Schlüsselspeicher und Schlüssel erstellen, die verwendet werden , Ihr Android - Paket zu unterzeichnen. Damit die Anmeldung bei Play Games funktioniert, muss Ihr APK angemeldet sein. 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. In der Firebase - Konsole finden Sie auf das Projekt Firebase , in dem Sie Ihr Unity - Projekt registriert.

  2. Legen Sie Ihre Spiele SHA-1 Fingerabdruck aus der Settings - Seite der Konsole Firebase, mit dem Schlüssel , den Sie in Unity gesetzt.

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

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

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

    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. Suchen 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 in der Google APIs - Konsole Anmeldeinformationen Seite.
      2. In dem OAuth 2.0 - Client - IDs Abschnitt, öffnen Sie den Web - Client (automatisch erstellt von Google Service) Detailseite. Auf dieser Seite werden Ihre Webserver-Client-ID und Ihr Geheimnis aufgeführt.
    2. Dann wird in der Firebase Konsole , öffnen den Abschnitt Authentication.

    3. Auf dem Anmelden Methode Registerkarte, aktivieren Sie die Play Games-Anmeldung Anbieter. Sie müssen die Webserver-Client-ID und das Client-Geheimnis Ihres Projekts angeben, die Sie von der APIs-Konsole erhalten haben.

  1. In der Google Play - Konsole , öffnen Sie Ihre App oder erstellen.

  2. In GROW Abschnitt, klicken Sie auf Spiele Play - Dienste> Setup & Management> Konfiguration.

  3. Klicken Sie auf Ja, mein Spiel bereits benutzt Google APIs, wählen Sie den Namen Ihrer Firebase Projekt aus der Liste, und klicken Sie auf Verwenden.

  4. Auf der Play Games Services - Konfiguration Seite, klicken Sie auf Hinzufügen Credential.

    1. Wählen Sie das Spiel Servertyp.
    2. Im OAuth Client - Feld, wählen Sie Ihr Projekt ID Web - Client. Stellen Sie sicher, dass dies dieselbe Client-ID ist, die Sie bei der Aktivierung der Play Spiele-Anmeldung angegeben haben.
    3. Speichern Sie Ihre Änderungen.
  5. Noch immer auf der Play Games Services - Konfiguration Seite, klicken Sie auf Hinzufügen erneut Credential.

    1. Wählen Sie die Android - Typ.
    2. Im OAuth Client - Feld, wählen Sie Ihr Projekt Android - Client - ID. (Wenn Ihre Android-Client-ID nicht angezeigt wird, stellen Sie sicher, dass Sie den SHA-1-Fingerabdruck Ihres Spiels in der Firebase-Konsole festlegen.)
    3. Speichern Sie Ihre Änderungen.
  6. Auf den Veranstaltungen, Achievements und Leader Seiten, erstellen Sie alle Spiele spielen Ressourcen , die Sie mit Ihrem Spiel verwenden möchten (wenn Sie irgendwelche nicht sofort verwenden möchten, können Sie einen Platzhalter Eintrag erstellen). Dann auf eine der Veranstaltungen, Erfolge oder Rang Seiten, klicken Sie auf Ressourcen abrufen und kopieren die Android Ressourcen irgendwo bequem Schnipsel. Sie benötigen das Snippet, um das Plug-in für die Google Play-Spieldienste 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. Auf der Tester Seite, fügen Sie die E - Mail - Adressen der Benutzer, die sich in Ihrem Spiel zu unterschreiben können , bevor Sie es in der Play Store veröffentlichen.

Integrieren Sie die Play Games-Anmeldung in Ihr Spiel

  1. Laden Sie die neueste Version der Play Games - Plugin für die Einheit und entpacken Sie es.

  2. Importieren Sie das Unity-Paket des Plugins in Ihr Unity-Projekt. Sie können das Unity - Paket in dem finden current-build - Verzeichnis des Release - Archivs.

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

    1. Klicken Sie auf Fenster> Google Play Games> Setup> Android Setup , um den Android - Konfigurationsbildschirm zu öffnen.
    2. Fügen Sie die Android - Ressourcen Snippet Sie aus dem Play - Konsole in die Ressourcen - Definition Feld bekam.
    3. Fügen Sie Ihre Web - Server - Client - ID, die Sie zur Verfügung gestellt , wenn Sie aktivierte Play Games-Anmeldung in der Firebase - Konsole in das Client - ID - Feld.
    4. Klicken Sie auf Setup.
  4. In Ihrem Spiel, konfigurieren Sie einen Play Games - Client mit der RequestServerAuthCode aktiviert 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. Dann, wenn ein Spieler wählt sich anmelden mit Play Games, rufen Social.localUser.Authenticate() :

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

Mit Firebase authentifizieren

Nachdem Sie Ihrem Spiel die Play Spiele-Anmeldung hinzugefügt haben, können Sie sich mit dem Authentifizierungscode der Play Spiele-Dienste bei Firebase authentifizieren.

  1. Nachdem sich der Spieler erfolgreich mit Play Games angemeldet hat, rufen Sie im Handler zur Fortsetzung der Anmeldung 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 der Play Spiele-Dienste gegen Firebase-Anmeldeinformationen aus und verwenden Sie die Firebase-Anmeldeinformationen, 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 anmeldet, 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 Nutzer in jeder App in Ihrem Projekt zu identifizieren.

In Ihrem Spiel, können Sie die Benutzerfirebase UID aus dem bekommen Firebase.Auth.FirebaseUser Objekt:

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 Ihrer Datenbank und Firebase Realtime Cloud Storage Sicherheitsregeln, können Sie die angemeldeten Nutzer die eindeutige Benutzer - ID aus der bekommen auth Variable, und es verwenden , um steuern kann ein Benutzer Zugriff , welche Daten.

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

Um einen Benutzer abzumelden, rufen SignOut() :

auth.SignOut();