Autentikasi platform untuk game Android

Untuk mengakses fungsi Layanan game Google Play, game Anda harus menyediakan akun pemain yang diautentikasi. Dokumentasi ini menjelaskan cara menerapkan pengalaman autentikasi yang lancar di game Anda.

Play Games Services v2 SDK menghadirkan sejumlah peningkatan yang meningkatkan jumlah pengguna yang diautentikasi ke game Anda, dan mempermudah pengembangan:

  • Peningkatan untuk pengguna:
    • Setelah memilih akun default, pengguna akan diautentikasi tanpa perlu berinteraksi dengan perintah.
    • Pengguna tidak perlu lagi mendownload Aplikasi Play Game untuk melakukan autentikasi dengan Layanan game Play atau membuat akun baru.
    • Pengguna kini dapat mengelola akun Layanan game Play untuk beberapa game dari satu halaman.
  • Peningkatan untuk developer:
  • Kode klien tidak lagi diperlukan untuk menangani alur autentikasi atau logout, karena proses login otomatis dipicu saat game dimulai, dan pengelolaan akun ditangani di setelan OS.

Integrasi klien baru

Bagian ini menunjukkan cara melakukan integrasi klien baru dengan Login Layanan game Play v2.

Menambahkan dependensi

Tambahkan dependensi SDK Layanan game Play ke file build.gradle level root aplikasi Anda. Jika menggunakan Gradle, Anda dapat menambahkan atau mengupdate dependensi sebagai berikut:

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

Menentukan project ID

Untuk menambahkan project ID SDK Layanan game Play ke aplikasi Anda, selesaikan langkah-langkah berikut:

  1. Di file AndroidManifest.xml aplikasi Anda, tambahkan <meta-data> elemen dan atribut berikut ke elemen <application>:

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

    Tentukan referensi resource String @string/game_services_project_id menggunakan project ID layanan Game milik game Anda sebagai nilai. Project ID layanan Game Anda dapat ditemukan pada bagian nama game di halaman Konfigurasi di Konsol Google Play.

  2. Dalam file res/values/strings.xml Anda, tambahkan referensi resource string dan tetapkan project ID sebagai nilai. Di Konsol Google Play, Anda dapat menemukan project ID dengan nama game Anda di halaman Konfigurasi. Contoh:

    <!-- 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>
    

Menginisialisasi SDK

Lakukan inisialisasi SDK Play Game di callback onCreate(..) dari class Application Anda.

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

...

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

Mendapatkan hasil autentikasi

Saat diluncurkan, game akan selalu mencoba mengautentikasi pengguna. Untuk mengautentikasi pengguna, Anda harus memverifikasi bahwa pengguna berhasil diautentikasi, lalu mendapatkan ID Pemainnya.

Untuk memverifikasi upaya autentikasi, panggil GamesSignInClient.isAuthenticated() dan gunakan addOnCompleteListener untuk mengambil hasilnya. Contoh:

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

Mencegah pembuatan profil yang dimulai otomatis

Anda dapat menonaktifkan perintah pembuatan profil yang dimulai otomatis melalui file manifes. Hal ini memungkinkan pengguna tanpa profil Layanan game Play untuk terus memuat game tanpa diminta membuat profil Layanan game Play. Untuk mengetahui informasi selengkapnya, lihat Opsi pembuatan profil.

Untuk menggunakan fitur ini, pastikan kondisi berikut terpenuhi:

  • Tidak ada profil Layanan game Play di Akun Google mana pun yang login di perangkat.
  • Game Anda terintegrasi dengan Play Games Services SDK com.google.android.gms:play-services-games-v2:21.0.0 atau yang lebih baru.

Untuk mencegah perintah pembuatan profil yang dimulai otomatis, selesaikan langkah-langkah berikut:

  1. Di file AndroidManifest.xml, tambahkan tag com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION di elemen <meta-data> dan atribut ke elemen <application>:

    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION"
            android:value="true" />
        ...
    </application>
    

    Menyetel tanda ini ke benar akan memberi tahu Layanan game Play bahwa game Anda akan menangani proses pembuatan profil. Oleh karena itu, Layanan game Play tidak akan otomatis menampilkan antarmuka pengguna pembuatan profil untuk pengguna di perangkat yang tidak memiliki profil Layanan game Play.

  2. Saat Anda memanggil Play Games Services API, kode status GamesClientStatusCodes.SIGN_IN_REQUIRED menunjukkan bahwa panggilan gagal karena pengguna tidak dapat diautentikasi secara otomatis karena tidak adanya profil Layanan game Play.

    Hal ini memungkinkan pengguna tanpa profil Layanan game Play untuk melanjutkan metode autentikasi yang diterapkan tanpa langsung diminta membuat profil Layanan game Play. Pembuatan profil dapat dimulai dengan memanggil GamesSignInService.signin().

    import com.google.android.gms.games.PlayGames;
    ...
    
    // Get the achievements client using Play Games services.
    AchievementsClient achievementsClient = PlayGames.getAchievementsClient(getActivity());
    achievementsClient.getAchievementsIntent()
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception exception) {
                int statusCode = ((ApiException) exception).getStatusCode();
                if (statusCode == GamesClientStatusCodes.SIGN_IN_REQUIRED) {
                  // SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services.
                  // Call GamesSignInService.signin() to prompt for
                  // authentication at a suitable time which will trigger the
                  // profile creation UI.
                  // (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status.
                }
              }
            });
  3. Setelah menambahkan tag penonaktifan, gunakan jendela logcat untuk memverifikasi penambahan. Output logcat berisi pesan yang mirip dengan berikut ini: "Game opted out of automatic profile creation prompt (using manifest)".