Uwierzytelnij się w Unity przy użyciu usług gier Google Play

Możesz używać usług Gier Google Play do logowania graczy w grach na Androida oparte na Firebase i Unity. Aby korzystać z usług Gier Google Play, zaloguj się za pomocą Firebase, najpierw zaloguj się w odtwarzaczu w Grach Google Play i poproś o użyj kodu uwierzytelniającego OAuth 2.0. Następnie przekaż kod autoryzacji do PlayGamesAuthProvider, aby wygenerować dane logowania Firebase, których możesz użyć do: uwierzytelniać się w Firebase.

Zanim zaczniesz

Konfigurowanie projektu w Unity

  1. Dodaj plik konfiguracyjny Firebase i pakiet SDK Unity (Firebase) do projektu Unity zgodnie z opisem w Dodaj Firebase do projektu w Unity Postępuj zgodnie z instrukcjami dotyczącymi Androida.

    Pamiętaj, aby zaimportować: FirebaseAuth.unitypackage.

  2. W edytorze Unity w sekcji Build Settings > (Ustawienia kompilacji >) Ustawienia odtwarzacza > Inny powód Ustawienia określają nazwę pakietu gry na Androida.

  3. Następnie w sekcji Ustawienia kompilacji > Ustawienia odtwarzacza > Ustawienia publikowania, wybierz lub utwórz magazyn kluczy i klucz, które zostaną użyte do podpisania Androida pakietu SDK. Aby logowanie w Grach Play było możliwe, plik APK musi być podpisany. ma zastosowanie nie tylko w przypadku publikacji, ale także Twojej gry.

Skonfiguruj projekt Firebase

  1. W konsoli Firebase otwórz projekt Firebase. w którym zarejestrowano projekt w Unity.

  2. Ustaw odcisk cyfrowy SHA-1 gry na Strona Ustawienia konsoli Firebase przy użyciu klucza ustawionego w Unity.

    Odcisk cyfrowy SHA-1 klucza możesz uzyskać za pomocą polecenia keytool:

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

    Można też uzyskać skrót SHA certyfikatu podpisywania za pomocą polecenie gradle signingReport:

    gradlew signingReport

    Plik APK musi być podpisany tym kluczem, również w trakcie tworzenia.

  3. Włącz Google Play Games jako dostawcę logowania:

    1. W konsoli Firebase otwórz Authentication.

    2. Generowanie i uzyskiwanie identyfikatora klienta i klienta serwera WWW projektu obiekt tajny:

      1. Na karcie Metoda logowania włącz logowanie przez Google. dostawcy usług.

      2. Skopiuj identyfikator klienta i tajny klucz serwera WWW z sekcji logowania Google dostawcy usług.

    3. Na karcie Metoda logowania włącz Play Games. dostawcy logowania i określ identyfikator klienta serwera WWW swojego projektu (tajny klucz klienta) uzyskany w ostatnim kroku.

Skonfiguruj Play Games services, używając informacji z aplikacji Firebase

  1. W Konsola Google Play, otwórz aplikację Google Play lub utwórz aplikację.

  2. W sekcji Rozwój kliknij Play Games services Konfiguracja Zarządzanie > Konfiguracja.

  3. Kliknij Tak, moja gra już używa interfejsów API Google i wybierz Firebase. projekt na liście i kliknij Użyj.

  4. Na stronie konfiguracji Play Games services kliknij Add Credential (Dodaj dane logowania).

    1. Wybierz typ Serwer gry.
    2. W polu Klient OAuth wybierz identyfikator klienta internetowego swojego projektu. Bądź upewnij się, że jest to identyfikator klienta podany podczas włączania opcji Play Games – logowanie.
    3. Zapisz zmiany.
  5. Pozostając na stronie konfiguracji Play Games services, kliknij Ponownie Dodaj dane logowania.

    1. Wybierz typ Androida.
    2. W polu Klient OAuth wybierz identyfikator klienta Androida dla swojego projektu. (Jeśli nie widzisz identyfikatora klienta Androida, upewnij się, że masz ustawiony Odcisk cyfrowy SHA-1 w konsoli Firebase).
    3. Zapisz zmiany.
  6. Na stronach Wydarzenia, Osiągnięcia i Tabele wyników utwórz Play Games zasobów, które chcesz wykorzystać w grze (jeśli ich nie masz) którego chcesz użyć od razu, możesz utworzyć wpis zastępczy). Następnie na dowolnej stronie Wydarzenia, Osiągnięcia lub Tabele wyników kliknij Pobierz zasoby i skopiuj gdzieś fragment kodu zasobów Androida co jest bardzo wygodne. Fragment kodu jest potrzebny do skonfigurowania Google Play Games services wtyczki.

    Fragment kodu zasobu wygląda w tym przykładzie:

    <?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. Na stronie Testerzy dodaj adresy e-mail wszystkich użytkowników, którzy że będziesz mieć możliwość zalogowania się w grze przed opublikowaniem jej Play Store

Integrowanie logowania w Grach Play z grą

  1. Pobierz najnowszą wersję programu Wtyczka Gry Play do Unity i wyodrębnić.

  2. Zaimportuj pakiet Unity wtyczki do projektu Unity. Dodatkowe informacje na temat Pakiet Unity w katalogu current-build archiwum wersji.

  3. Skonfiguruj wtyczkę Gry Play:

    1. Kliknij Okno > Gry Google Play > Konfiguracja > Konfiguracja Androida, aby otworzyć Ekran Konfiguracja Androida.
    2. Wklej fragment kodu zasobów Androida pobrany z Konsoli Play. w polu Definicja zasobów.
    3. Wklej identyfikator klienta serwera WWW podany przy aktywacji Zaloguj się w Grach Play w konsoli Firebase za pomocą identyfikatora klienta. .
    4. Kliknij Konfiguruj.
  4. Skonfiguruj w swojej grze klienta Gier Play z wykorzystaniem RequestServerAuthCode włączone ustawienie:

    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. Następnie, gdy gracz zdecyduje się zalogować w Grach Play, wywołaj polecenie Social.localUser.Authenticate():

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

Uwierzytelnij za pomocą Firebase

Po dodaniu do gry logowania w Grach Play możesz używać kodu autoryzacji z usług Gier Play do uwierzytelniania w Firebase.

  1. Gdy gracz zaloguje się za pomocą Gier Play, zaloguj się w aplikacji do obsługi kontynuacji, pobierz kod autoryzacji dla konta gracza:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Następnie wymień kod autoryzacji z usług Gier Play na potrzeby Firebase dane logowania i użyj danych logowania Firebase, aby uwierzytelnić gracza:

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

Dalsze kroki

Gdy użytkownik zaloguje się po raz pierwszy, tworzone jest nowe konto użytkownika. powiązane z identyfikatorem Gier Play. To nowe konto jest przechowywane w ramach projektu Firebase i możesz go użyć do identyfikacji użytkownika w każdej aplikacji w projektach AI.

W grze możesz uzyskać identyfikator Firebase UID użytkownika w aplikacji Firebase.Auth.FirebaseUser obiekt:

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

W Bazie danych czasu rzeczywistego Firebase i Regułach zabezpieczeń Cloud Storage możesz uzyskać unikalny identyfikator zalogowanego użytkownika ze zmiennej auth i użyj go do kontrolować dostęp użytkownika do danych.

Aby uzyskać informacje o użytkowniku w Grach Play lub uzyskać dostęp do usług Gier Play: korzysta z interfejsów API udostępnianych przez wtyczkę Gier Play.

Aby wylogować użytkownika, zadzwoń pod numer SignOut():

auth.SignOut();