Google Play Oyun Hizmetlerini Kullanarak Unity'de Kimlik Doğrulama

Oyuncuların Firebase ve Unity üzerine kurulu bir Android oyununda oturum açmasını sağlamak için Google Play Oyunlar hizmetlerini kullanabilirsiniz. Google Play Oyunlar hizmetlerini kullanmak için Firebase ile oturum açın, öncelikle oynatıcıda Google Play Oyunlar ile oturum açın ve bunu yaparken bir OAuth 2.0 kimlik doğrulama kodu isteyin. Ardından, Firebase ile kimlik doğrulamak için kullanabileceğiniz bir Firebase kimlik bilgisi oluşturmak üzere kimlik doğrulama kodunu PlayGamesAuthProvider iletin.

Sen başlamadan önce

Unity projenizi ayarlayın

  1. Firebase yapılandırma dosyasını ve Firebase Unity SDK'sını Unity projenize Firebase'i Unity projenize ekleme bölümünde açıklandığı şekilde ekleyin. Android için talimatları izleyin.

    FirebaseAuth.unitypackage dosyasını içe aktardığınızdan emin olun.

  2. Unity Düzenleyicisi'nde Yapı Ayarları > Oyuncu Ayarları > Diğer Ayarlar altında oyununuzun Android paket adını ayarlayın.

  3. Ardından, Yapı Ayarları > Oynatıcı Ayarları > Yayınlama Ayarları altında, Android paketinizi imzalamak için kullanılacak bir anahtar deposu ve anahtar seçin veya oluşturun. Play Oyunlar'da oturum açma işleminin çalışması için APK'nızın imzalanmış olması gerekir; bu gereksinim yalnızca yayınlama için değil, oyununuzun geliştirilmesi sırasında da geçerlidir.

Firebase projenizi ayarlayın

  1. Firebase konsolunda Unity projenizi kaydettiğiniz Firebase projesine gidin.

  2. Unity'de ayarladığınız anahtarı kullanarak Firebase konsolunun Ayarlar sayfasından oyununuzun SHA-1 parmak izini ayarlayın.

    keytool komutuyla anahtarınızın SHA-1 parmak izini alabilirsiniz:

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

    Alternatif olarak, imzalama sertifikanızın SHA karmasını signingReport komutuyla alabilirsiniz:

    gradlew signingReport

    APK'nızın geliştirme sırasında da dahil olmak üzere bu anahtarla imzalanması gerekir.

  3. Google Play Games'i oturum açma sağlayıcısı olarak etkinleştirin:

    1. Firebase konsolunda Kimlik Doğrulama bölümünü açın.

    2. Projenizin web sunucusu istemci kimliğini ve istemci sırrını oluşturun ve edinin:

      1. Oturum açma yöntemi sekmesinde Google oturum açma sağlayıcısını etkinleştirin.

      2. Web sunucusu istemci kimliğini ve sırrını Google oturum açma sağlayıcısından kopyalayın.

    3. Oturum açma yöntemi sekmesinde Play Games oturum açma sağlayıcısını etkinleştirin ve projenizin son adımda aldığınız web sunucusu istemci kimliğini ve istemci sırrını belirtin.

Play Oyunlar hizmetlerini Firebase uygulama bilgilerinizle yapılandırma

  1. Google Play Console'da Google Play uygulamanızı açın veya bir tane oluşturun.

  2. Büyüme bölümünde Play Games hizmetleri > Kurulum ve Yönetim > Yapılandırma 'yı tıklayın.

  3. Evet, oyunum zaten Google API'lerini kullanıyor'u tıklayın, listeden Firebase projenizi seçin ve ardından Kullan'ı tıklayın.

  4. Play Oyunlar hizmetleri yapılandırma sayfasında Kimlik Bilgisi Ekle 'yi tıklayın.

    1. Oyun sunucusu türünü seçin.
    2. OAuth istemcisi alanında projenizin web istemcisi kimliğini seçin. Bunun, Play Oyunlar'da oturum açmayı etkinleştirdiğinizde belirttiğiniz istemci kimliğinin aynı olduğundan emin olun.
    3. Değişikliklerinizi kaydedin.
  5. Hâlâ Play Oyunlar hizmetleri yapılandırma sayfasındayken Kimlik Bilgisi Ekle'yi tekrar tıklayın.

    1. Android türünü seçin.
    2. OAuth istemcisi alanında projenizin Android istemci kimliğini seçin. (Android istemci kimliğinizi görmüyorsanız oyununuzun SHA-1 parmak izini Firebase konsolunda ayarladığınızdan emin olun.)
    3. Değişikliklerinizi kaydedin.
  6. Etkinlikler , Başarılar ve Skor Tabloları sayfalarında oyununuzda kullanmak istediğiniz Play Oyunlar kaynaklarını oluşturun (herhangi bir kaynağı hemen kullanmak istemiyorsanız yer tutucu giriş oluşturabilirsiniz). Ardından Etkinlikler , Başarılar veya Skor Tabloları sayfalarından herhangi birinde Kaynakları al'a tıklayın ve Android kaynakları pasajını uygun bir yere kopyalayın. Google Play Oyunlar hizmetleri eklentisini kurmak için snippet'e ihtiyacınız olacak.

    Kaynaklar pasajı aşağıdaki örneğe benzer:

    <?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. Test Kullanıcıları sayfasında, oyunu Play Store'da yayınlamadan önce oyununuzda oturum açabilmesi gereken tüm kullanıcıların e-posta adreslerini ekleyin.

Play Oyunlar oturum açma işlemini oyununuza entegre edin

  1. Unity için Play Oyunlar eklentisinin en son sürümünü indirin ve çıkarın.

  2. Eklentinin Unity paketini Unity projenize aktarın. Unity paketini sürüm arşivinin current-build dizininde bulabilirsiniz.

  3. Play Oyunlar eklentisini kurun:

    1. Android Yapılandırma ekranını açmak için Pencere > Google Play Oyunlar > Kurulum > Android Kurulumu'nu tıklayın.
    2. Play konsolundan aldığınız Android kaynakları snippet'ini Kaynak Tanımı alanına yapıştırın.
    3. Firebase konsolunda Play Oyunlar'da oturum açmayı etkinleştirdiğinizde sağladığınız web sunucusu istemci kimliğini İstemci Kimliği alanına yapıştırın.
    4. Kurulum'u tıklayın.
  4. Oyununuzda, RequestServerAuthCode ayarı etkinleştirilmiş bir Play Games istemcisi yapılandırın:

    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. Ardından, oyuncu Play Games'te oturum açmayı seçtiğinde Social.localUser.Authenticate() çağırın:

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

Firebase ile kimlik doğrulama

Oyununuza Play Oyunlar oturum açma özelliğini ekledikten sonra Firebase'de kimlik doğrulamak için Play Oyunlar hizmetlerindeki kimlik doğrulama kodunu kullanabilirsiniz.

  1. Oyuncu Play Games'i kullanarak başarıyla oturum açtıktan sonra oturum açma devam işleyicisinde oyuncunun hesabı için bir kimlik doğrulama kodu alın:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Ardından Play Oyunlar hizmetlerindeki kimlik doğrulama kodunu Firebase kimlik bilgisi ile değiştirin ve oynatıcının kimliğini doğrulamak için Firebase kimlik bilgisini kullanın:

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

Sonraki adımlar

Bir kullanıcı ilk kez oturum açtıktan sonra yeni bir kullanıcı hesabı oluşturulur ve Play Games Kimliğine bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.

Oyununuzda kullanıcının Firebase UID'sini Firebase.Auth.FirebaseUser nesnesinden alabilirsiniz:

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

Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama Güvenliği Kurallarınızda, oturum açan kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve bunu, kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Bir kullanıcının Play Oyunlar oynatıcı bilgilerini almak veya Play Oyunlar hizmetlerine erişmek için Play Oyunlar eklentisi tarafından sağlanan API'leri kullanın.

Bir kullanıcının oturumunu kapatmak için SignOut() öğesini çağırın:

auth.SignOut();