Uwierzytelnianie platformy w przypadku gier na Androida

Aby uzyskać dostęp do funkcji Usług gier Google Play, gra musi udostępniać konto uwierzytelnionego gracza. Z tej dokumentacji dowiesz się, jak wdrożyć w grze bezproblemowe uwierzytelnianie.

Pakiet SDK usług gier Play w wersji 2 wprowadza szereg ulepszeń, które zwiększają liczbę użytkowników uwierzytelnionych w Twojej grze i ułatwiają tworzenie gier:

  • Ulepszenia dla użytkowników:
    • Po wybraniu konta domyślnego użytkownicy są uwierzytelniani bez konieczności interakcji z promptem.
    • Użytkownicy nie muszą już pobierać aplikacji Gry Play, aby uwierzytelniać się w usługach gier Play lub tworzyć nowe konto.
    • Użytkownicy mogą teraz zarządzać kontami usług gier Play w przypadku wielu gier na jednej stronie.
  • Ulepszenia dla deweloperów:
  • Kod klienta nie musi już obsługiwać uwierzytelniania ani wylogowywania, ponieważ logowanie jest automatycznie wywoływane po uruchomieniu gry, a zarządzanie kontem odbywa się w ustawieniach systemu operacyjnego.

Integracja nowego klienta

W tej sekcji dowiesz się, jak przeprowadzić integrację nowego klienta z usługami gier Play – logowanie w wersji 2.

Dodawanie zależności

Dodaj zależność pakietu SDK usług gier Play do pliku build.gradle najwyższego poziomu aplikacji. Jeśli używasz Gradle, możesz dodać lub zaktualizować zależność w ten sposób:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

Określ identyfikator projektu

Aby dodać do aplikacji identyfikator projektu pakietu SDK usług gier Play, wykonaj te czynności:

  1. W pliku AndroidManifest.xml aplikacji dodaj ten element <meta-data> i atrybuty do elementu <application>:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    Zdefiniuj odwołanie do zasobu String @string/game_services_project_id używając jako wartości identyfikatora projektu usług gier. Identyfikator projektu w usługach gier znajdziesz pod nazwą gry na stronie Konfiguracja w Konsoli Google Play.

  2. W pliku res/values/strings.xml dodaj odwołanie do zasobu ciągu znaków i ustaw identyfikator projektu jako wartość. W Konsoli Google Play identyfikator projektu znajdziesz pod nazwą gry na stronie Konfiguracja. Na przykład:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

Inicjowanie pakietu SDK

Zainicjuj pakiet SDK Usług gier Play w wywołaniu zwrotnym onCreate(..) klasy Application.

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

Uzyskiwanie wyniku uwierzytelniania

Po uruchomieniu gra zawsze będzie próbować uwierzytelnić użytkownika. Aby uwierzytelnić użytkownika, musisz sprawdzić, czy uwierzytelnianie się powiodło, a następnie uzyskać jego identyfikator gracza.

Aby zweryfikować próbę uwierzytelnienia, zadzwoń pod numer GamesSignInClient.isAuthenticated() i użyj addOnCompleteListener, aby pobrać wyniki. Na przykład:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Show a sign-in button to ask players to authenticate. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

Jeśli użytkownik nie zdecyduje się na uwierzytelnianie podczas uruchamiania gry, zalecamy dalsze wyświetlanie przycisku z ikoną Usług Play lub wyświetlanie ekranu logowania z przyciskiem z ikoną Usług Play jako jedną z opcji uwierzytelniania i ponowne próby uwierzytelnienia użytkownika przez wywołanie funkcji GamesSignInClient.signIn(), jeśli użytkownik naciśnie przycisk. Po sprawdzeniu, czy użytkownik jest uwierzytelniony, możesz pobrać identyfikator gracza, aby go zidentyfikować. Na przykład:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);