Play Games Hizmetleri Oturum Açma v2'ye geçin

Bu sayfada, istemci kodunuzu Play Games Hizmetleri v1'den v2'ye nasıl taşıyacağınız açıklanmaktadır.

Yeni SDK, oturum açma başarısını artıracak olan dört önemli değişiklik içeriyor. Bu değişikliklere dikkat etmeniz gerekir:

  1. Oyununuz başlatıldığında oturum açma otomatik olarak tetiklenir. Oturum açmak için GoogleSignIn SDK'sının GoogleSignInClient API'sini kullanmak yerine, otomatik oturum açma denemesinin sonucunu getirmek için GamesSignInClient.isAuthenticated() kullanabilirsiniz.
  2. İstemci Fabrikası sınıfları için artık bir GoogleSignInAccount nesnesinin geçirilmesi gerekmeyecek. Ek OAuth kapsamları istenemez (GAMES_LITE ve SCOPE_APPFOLDER otomatik olarak istenir).
  3. Kimlik doğrulama jetonları artık Play Games Hizmetleri SDK'sında GamesSignInClient.requestServerSideAccess() kullanılarak sağlanıyor.
  4. Oturum kapatma yöntemi kaldırıldı. Bundan böyle Play Games Hizmetleri'nde oturum açmak veya oturumu kapatmak için bir oyun içi düğme gerekmeyecek.

Ayrıca, oyun başlatıldığında otomatik oturum açıldığı için oyununuza ek girişler de yapılacak. Bu nedenle, oyununuzun giriş isteği kotasını aşmadığından emin olmak için kota yönetiminizi gözden geçirmeniz gerekir.

Yeni SDK Maven deposunu hedefleyin

Gradle derleme sistemini kullanıyorsanız bu işlemi, modülünüzün build.gradle dosyasında bağımlılığınızı com.google.android.gms:play-services-games-v2:+ yapısına değiştirerek yapabilirsiniz. Örneğin:

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

SDK'yı başlatma

Application sınıfınızın onCreate(..) geri çağırmasında Play Games SDK'sını başlatın. Örneğin:

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

...

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

Oturum açma ve oturum kapatma çağrılarını kaldır

GAMES, GAMES_LIGHT ve SCOPE_APPFOLDER dışında ek kapsam belirtmezseniz kullanım alanınızı taşımak basit bir işlemdir.

  1. GoogleSignIn API'yi kullanarak oturum açma çağrılarını kaldırın. Oturum açma işlemi her zaman oyun başlangıcında yapılır. Bunun yerine, GamesSignInClient.isAuthenticated() kullanarak otomatik oturum açma denemesinin sonucunu dinleyin.

    GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
    
    gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
      boolean isAuthenticated =
        (isAuthenticatedTask.isSuccessful() &&
         isAuthenticatedTask.getResult().isAuthenticated());
    
      if (isAuthenticated) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a
        // login button to ask  players to sign-in. Clicking it should
        // call GamesSignInClient.signIn().
      }
    });
    
  2. Hesap yönetimi artık OS ve Play Games uygulaması ayarlarında yer aldığı için tüm oturum kapatma çağrılarını kaldırın.

  3. Oyuncu başarıyla oturum açmışsa Play Games oturum açma düğmesini oyununuzdan kaldırın. Oyun başlatıldığında kullanıcı oturum açmamayı tercih ederse isteğe bağlı olarak Play Oyunlar simgesiyle bir düğme göstermeye devam edebilir ve GamesSignInClient.signIn() ile giriş işlemini tetikleyebilirsiniz.

  4. Kullanıcının oturum açtığını doğruladıktan sonra, kullanıcıyı tanımlamak için oyuncu kimliğini alabilirsiniz.

    PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
        // Get PlayerID with mTask.getResult().getPlayerId()
      }
    );
    
  5. Artık kullanmıyorsanız GoogleSignIn API'ye olan bağımlılığınızı kaldırın.

Müşteri sınıf adlarını güncelleme

İstemci oluştururken (ör. LeaderboardsClient veya AchievementsClient) Games.getFooClient() yerine PlayGames.getFooClient() kullanın.

Sunucu tarafı erişim iste

Sunucu tarafı erişim isteğinde bulunurken GoogleSignInAccount.getServerAuthCode() yerine GamesSignInClient.requestServerSideAccess() kullanın.

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
  .requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
                           /*forceRefreshToken=*/ false)
  .addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
      String serverAuthToken = task.getResult();
      // Send authentication code to the backend game server to be
      // exchanged for an access token and used to verify the
      // player via the Play Games Services REST APIs.
    } else {
      // Failed to retrieve authentication code.
    }
});

Ekstra kapsamları kaldır

Play Games Hizmetleri v2 ile ek kapsam isteğinde bulunamazsınız. Yine de ek kapsam istemeniz gerekiyorsa Play Games Hizmetleri'nin yanı sıra Google ile Oturum Açma SDK'sını kullanmanızı öneririz.

GoogleApiClient'den taşıma

Daha eski entegrasyonlar için oyununuz Play Oyun Hizmetleri SDK'sının GoogleApiClient API varyasyonuna bağlı olabilir. Bu hizmet 2017'nin sonlarında kullanımdan kaldırılmış ve yerini "bağlantısız" istemciler almıştır. Taşıma işlemi için GoogleApiClient sınıfını "bağlantısız" bir eşdeğeriyle değiştirebilirsiniz. Ardından, oyununuzu v1'den v2'ye taşırken yukarıdaki yönergeleri de uygulamanız gerekir. Aşağıda, yaygın sınıfların eşlemesini görebilirsiniz:

com.google.android.gms.games.achievement.Achievements ->
    com.google.android.gms.games.AchievementsClient

com.google.android.gms.games.leaderboard.Leaderboard ->
    com.google.android.gms.games.LeaderboardsClient

com.google.android.gms.games.snapshot.Snapshots ->
    com.google.android.gms.games.SnapshotsClient

com.google.android.gms.games.stats.PlayerStats ->
    com.google.android.gms.games.PlayerStatsClient

com.google.android.gms.games.Players ->
    com.google.android.gms.games.PlayersClient

com.google.android.gms.games.GamesStatusCodes ->
    com.google.android.gms.games.GamesClientStatusCodes