Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Otentikasi dalam Unity Menggunakan Layanan Google Play Game

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat menggunakan layanan Google Play Game untuk memasukkan pemain ke game Android yang dibuat di Firebase dan Unity. Untuk menggunakan layanan Google Play Game, masuk dengan Firebase, pertama-tama masuk pemain dengan Google Play Game, dan minta kode autentikasi OAuth 2.0 saat Anda melakukannya. Kemudian, teruskan kode autentikasi ke PlayGamesAuthProvider untuk membuat kredensial Firebase, yang dapat Anda gunakan untuk mengautentikasi dengan Firebase.

Sebelum kamu memulai

Siapkan proyek Unity Anda

  1. Tambahkan file konfigurasi Firebase dan Firebase Unity SDK ke proyek Unity Anda seperti yang dijelaskan dalam Menambahkan Firebase ke proyek Unity Anda . Ikuti petunjuk untuk Android.

    Pastikan untuk mengimpor FirebaseAuth.unitypackage .

  2. Di Unity Editor, di bawah Build Settings > Player Settings > Other Settings , atur nama paket Android game Anda.

  3. Kemudian, di bawah Build Settings > Player Settings > Publishing Settings , pilih atau buat keystore dan kunci, yang akan digunakan untuk menandatangani paket Android Anda. APK Anda harus ditandatangani agar proses masuk ke Play Game berfungsi—persyaratan ini tidak hanya berlaku untuk publikasi, tetapi juga selama pengembangan game Anda.

Siapkan proyek Firebase Anda

  1. Di konsol Firebase , buka proyek Firebase tempat Anda mendaftarkan proyek Unity Anda.

  2. Setel sidik jari SHA-1 game Anda dari halaman Pengaturan konsol Firebase, menggunakan kunci yang Anda atur di Unity.

    Anda bisa mendapatkan sidik jari SHA-1 dari kunci Anda dengan perintah keytool :

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

    Atau, Anda bisa mendapatkan hash SHA dari sertifikat penandatanganan Anda dengan perintah gradle signingReport : l10n

    gradlew signingReport

    APK Anda harus ditandatangani dengan kunci ini, termasuk selama pengembangan.

  3. Aktifkan Google Play Game sebagai penyedia masuk:

    1. Temukan ID klien server web dan rahasia klien proyek Anda. ID klien server web mengidentifikasi proyek Firebase Anda ke server autentikasi Google Play.

      Untuk menemukan nilai-nilai ini:

      1. Buka proyek Firebase Anda di halaman kredensial konsol Google API .
      2. Di bagian ID klien OAuth 2.0 , buka halaman detail klien Web (dibuat otomatis oleh Layanan Google) . Halaman ini mencantumkan ID klien dan rahasia server web Anda.
    2. Kemudian, di Firebase console , buka bagian Otentikasi .

    3. Pada tab Metode masuk , aktifkan penyedia masuk Play Game . Anda perlu menentukan ID klien dan rahasia klien server web proyek Anda, yang Anda dapatkan dari konsol API.

Konfigurasikan layanan Play Game dengan informasi aplikasi Firebase Anda

  1. Di Konsol Google Play , buka aplikasi Google Play Anda atau buat aplikasi.

  2. Di bagian Tumbuh , klik Layanan Play Game > Penyiapan & Manajemen > Konfigurasi .

  3. Klik Ya, permainan saya sudah menggunakan Google API , pilih proyek Firebase Anda dari daftar, lalu klik Gunakan .

  4. Pada halaman konfigurasi layanan Play Game, klik Tambahkan Kredensial .

    1. Pilih jenis server Game .
    2. Di bidang klien OAuth , pilih ID klien web proyek Anda. Pastikan ini adalah ID klien yang sama yang Anda tentukan saat mengaktifkan masuk ke Play Game.
    3. Simpan perubahan Anda.
  5. Masih di halaman konfigurasi layanan Play Game, klik Add Credential lagi.

    1. Pilih jenis Android .
    2. Di bidang klien OAuth , pilih ID klien Android proyek Anda. (Jika Anda tidak melihat ID klien Android, pastikan Anda menyetel sidik jari SHA-1 game Anda di konsol Firebase.)
    3. Simpan perubahan Anda.
  6. Pada halaman Acara , Prestasi , dan Papan Peringkat , buat sumber daya Play Game apa pun yang ingin Anda gunakan dengan game Anda (jika Anda tidak ingin segera menggunakannya, Anda dapat membuat entri placeholder). Kemudian, di salah satu laman Acara , Pencapaian , atau Papan Peringkat , klik Dapatkan sumber daya dan salin cuplikan sumber daya Android di tempat yang nyaman. Anda memerlukan cuplikan untuk menyiapkan plugin layanan Google Play Game.

    Cuplikan sumber daya terlihat seperti contoh berikut:

    <?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. Di halaman Penguji , tambahkan alamat email pengguna mana pun yang perlu masuk ke game Anda sebelum Anda merilisnya di Play Store.

Integrasikan proses masuk Play Game ke dalam game Anda

  1. Unduh rilis terbaru plugin Play Game untuk Unity dan ekstrak.

  2. Impor paket Unity plugin ke proyek Unity Anda. Anda dapat menemukan paket Unity di direktori current-build dari arsip rilis.

  3. Siapkan plugin Play Game:

    1. Klik Window > Google Play Games > Setup > Android Setup untuk membuka layar Konfigurasi Android .
    2. Tempelkan cuplikan sumber daya Android yang Anda dapatkan dari konsol Play ke bidang Definisi Sumber Daya .
    3. Tempel ID klien server web Anda, yang Anda berikan saat mengaktifkan proses masuk Play Game di konsol Firebase, ke dalam bidang ID Klien .
    4. Klik Pengaturan .
  4. Di game Anda, konfigurasikan klien Play Game dengan setelan RequestServerAuthCode diaktifkan:

    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. Kemudian, ketika seorang pemain memilih untuk masuk dengan Play Game, panggil Social.localUser.Authenticate() :

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

Otentikasi dengan Firebase

Setelah menambahkan proses masuk Play Game ke game, Anda dapat menggunakan kode autentikasi dari layanan Play Game untuk mengautentikasi dengan Firebase.

  1. Setelah pemain berhasil masuk menggunakan Play Game, di pengendali kelanjutan masuk, dapatkan kode autentikasi untuk akun pemain:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Kemudian, tukarkan kode autentikasi dari layanan Play Game dengan kredensial Firebase, dan gunakan kredensial Firebase untuk mengautentikasi pemutar:

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

Langkah selanjutnya

Setelah pengguna masuk untuk pertama kalinya, akun pengguna baru akan dibuat dan ditautkan ke ID Play Game mereka. Akun baru ini disimpan sebagai bagian dari proyek Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam proyek Anda.

Dalam game Anda, Anda bisa mendapatkan UID Firebase pengguna dari objek Firebase.Auth.FirebaseUser :

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

Di Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda bisa mendapatkan ID pengguna unik pengguna yang masuk dari variabel auth , dan menggunakannya untuk mengontrol data apa yang dapat diakses pengguna.

Untuk mendapatkan informasi pemain Play Game pengguna atau untuk mengakses layanan Play Game, gunakan API yang disediakan oleh plugin Play Game.

Untuk mengeluarkan pengguna, panggil SignOut() :

auth.SignOut();