Google Play Games Hizmetleri'ni kullanarak Unity'de kimlik doğrulama

Bir Android oyununda kullanıcıların oturum açmak için Google Play Games hizmetlerini kullanabilirsiniz geliştirmeyi öğreneceksiniz. Google Play Games Hizmetleri'nde oturum açmak için şununla oturum açın: Firebase için öncelikle Google Play Games'de oturum açın ve OAuth 2.0 yetkilendirme kodu ekleyin. Ardından, Firebase kimlik bilgisi oluşturmak için PlayGamesAuthProvider Firebase ile kimlik doğrulama.

Başlamadan önce

Unity projenizi oluşturun

  1. Firebase yapılandırma dosyasını ve Firebase Unity SDK'sını Unity projenize ekleyin aşağıdaki şekilde açıklandığı gibi Firebase'i Unity projenize ekleyin. Android için talimatları uygulayın.

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

  2. Unity Editor'da, Build Settings (Derleme Ayarları) > Oynatıcı Ayarları > Diğer Ayarlar, oyununuzun Android paket adını belirler.

  3. Ardından, Derleme Ayarları > Oynatıcı Ayarları > Yayınlama Ayarları, Android cihazınızı imzalamak için kullanılacak bir anahtar deposu ve anahtar seçin veya oluşturun paketinden yararlanın. Play Games'te oturum açma özelliğinin çalışması için APK'nızın imzalanmış olması gerekir bu gereklilik yalnızca yayıncılık için değil, ayrıca geliştirme sürecinde gösterir.

Firebase projenizi oluşturun

  1. Firebase konsolunda Firebase projesine gidin oluşturduğunuz bir dosyadır.

  2. Oyununuzun SHA-1 parmak izini Ayarlar sayfası Firebase konsolu içinde, Unity'de ayarladığınız anahtarı kullanarak.

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

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

    Alternatif olarak, gradle signingReport komutu:

    gradlew signingReport

    APK'nız, geliştirme sırasında da dahil olmak üzere bu anahtarla imzalanmalıdır.

  3. Google Play Games sağlayıcısını oturum açma sağlayıcısı olarak etkinleştir:

    1. Firebase konsolunda Authentication bölümünü tıklayın.

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

      1. Oturum açma yöntemi sekmesinde, Google ile oturum açma özelliğini etkinleştirin sağlar.

      2. Google ile oturum açma bilgilerinden web sunucusu istemci kimliğini ve gizli anahtarı kopyalayın sağlar.

    3. Oturum açma yöntemi sekmesinde Play Games hizmetini etkinleştirin oturum açma sağlayıcısını seçin ve projenizin web sunucusu istemci kimliğini ve istemci sırrı (gizli anahtarı) içerir.

Play Games services uygulamasını Firebase uygulama bilgilerinizle yapılandırın

  1. Google Play Konsolu, Google Play uygulamanızı açın veya bir uygulama oluşturun.

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

  3. Evet, oyunumda zaten Google API'leri kullanılıyor'u tıklayın, Firebase'inizi seçin projeyi seçin ve Kullan'ı tıklayın.

  4. Play Games services yapılandırma sayfasında şunu tıklayın: Kimlik Bilgisi Ekle.

    1. Oyun sunucusu türünü seçin.
    2. OAuth istemcisi alanında projenizin web istemcisi kimliğini seçin. Bunun, etkinleştirdiğiniz istemci kimliği ile aynı olduğundan emin olun. Play Games oturum açma.
    3. Yaptığınız değişiklikleri kaydedin.
  5. Play Games services yapılandırma sayfasındayken Tekrar Kimlik Bilgisi Ekleyin.

    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 Firebase konsolunda SHA-1 parmak izi.)
    3. Yaptığınız değişiklikleri kaydedin.
  6. Etkinlikler, Başarılar ve Skor Tabloları sayfalarında, oluşturduğunuz herhangi bir Oyununuzla kullanmak istediğiniz Play Games kaynak (yoksa) hemen kullanmak istiyorsanız bir yer tutucu girişi oluşturabilirsiniz). Ardından, Etkinlikler, Başarılar veya Skor tabloları sayfalarından herhangi birinde Kaynakları alın ve Android kaynak snippet'ini bir yere kopyalayın. yardımcı olur. Google Play Games services özelliğini ayarlamak için snippet'e ihtiyacınız olacak. eklentisidir.

    Kaynak snippet'i 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, teste tabi tutulması gereken tüm kullanıcıların e-posta adreslerini Google Play Geliştirici Konsolu'nda yayınlamadan önce oyununuzda oturum Play Store.

Play Games oturum açma özelliğini oyununuza entegre etme

  1. En son sürümünü indirin Unity için Play Games eklentisi dosyayı çıkartın.

  2. Eklentinin Unity paketini Unity projenize aktarın. Daha fazla Sürüm arşivinin current-build dizinindeki Unity paketi.

  3. Play Games eklentisini ayarlayın:

    1. Pencere > Google Play Oyunlar > Kurulum > Android Kurulumu'nu Android Yapılandırması ekranı.
    2. Play Console'dan aldığınız Android kaynakları snippet'ini Kaynak Tanımı alanına girin.
    3. Etkinleştirirken sağladığınız web sunucusu istemci kimliğinizi yapıştırın Firebase konsolunda, İstemci Kimliği'ne giderek Play Games oturum açma girin.
    4. Kurulum'u tıklayın.
  4. Oyununuzda, RequestServerAuthCode ile bir Play Games istemcisini yapılandırın ayar etkin:

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

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

Firebase ile kimlik doğrulama

Oyununuza Play Games oturum açma bilgilerini ekledikten sonra, Play Games Hizmetleri'ne gidin.

  1. Oyuncu, Play Games'i kullanarak başarıyla oturum açtıktan sonra, devam işleyicisi, oyuncunun hesabı için bir yetkilendirme kodu al:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Ardından, Play Games hizmetlerindeki yetkilendirme kodunu Firebase 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

Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve kendi Play Games kimliklerine bağladıkları hesaptır. Bu yeni hesap, şu bilgilerin bir parçası olarak saklanır: ve Firebase'deki tüm uygulamalarda bir kullanıcıyı tanımlamak için kullanılabilir. belirler.

Oyununuzda, kullanıcının Firebase UID'sini şuradan edinebilirsiniz: Firebase.Auth.FirebaseUser nesne:

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 Realtime Database ve Cloud Storage Güvenlik Kurallarınızda şunları alabilirsiniz: oturum açmış kullanıcının auth değişkenindeki benzersiz kullanıcı kimliğini kullanarak Kullanıcının hangi verilere erişebileceğini kontrol etmek

Kullanıcının Play Games oyuncu bilgilerini almak veya Play Games hizmetlerine erişmek için: Play Games eklentisi tarafından sağlanan API'leri kullanmalıdır.

Bir kullanıcının oturumunu kapatmak için SignOut() numaralı telefonu arayın:

auth.SignOut();