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

Firebase ve Unity üzerinde oluşturulan bir Android oyununda oyuncuların oturum açması için Google Play Games Hizmetleri'ni kullanabilirsiniz. Firebase ile Google Play Games Hizmetleri oturum açma özelliğini kullanmak için önce oyuncunun Google Play Games ile oturum açmasını sağlayın ve bunu yaparken bir OAuth 2.0 yetkilendirme kodu isteyin. Ardından, yetkilendirme kodunu PlayGamesAuthProvider'ya ileterek Firebase kimlik bilgisi oluşturun. Bu kimlik bilgisini Firebase ile kimlik doğrulamak için kullanabilirsiniz.

Başlamadan önce

Unity projenizi oluşturma

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

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

  2. Unity Düzenleyici'de Build Settings > Player Settings > Other Settings altında oyununuzun Android paket adını ayarlayın.

  3. Ardından, Build Settings > Player Settings > Publishing Settings (Derleme Ayarları > Oynatıcı Ayarları > Yayınlama Ayarları) bölümünde Android paketinizi imzalamak için kullanılacak bir anahtar deposu ve anahtar seçin veya oluşturun. Play Games oturum açma özelliğinin çalışması için APK'nızın imzalanması gerekir. Bu koşul yalnızca yayınlama için değil, oyununuzun geliştirilmesi sırasında da geçerlidir.

Firebase projenizi oluşturma

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

  2. Oyununuzun SHA-1 parmak izini belirtin.

    1. Firebase konsolunda Ayarlar > Genel sekmesine gidin.

    2. Uygulamalarınız kartına gidin, Android uygulamanızı seçin ve SHA sertifikası parmak izleri alanına SHA-1 parmak izinizi ekleyin.

    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ı gradle signingReport komutuyla da alabilirsiniz:

    gradlew signingReport

    Uygulamanızın SHA parmak izini alma hakkında ayrıntılı bilgi için İstemcinizin Kimliğini Doğrulama başlıklı makaleyi inceleyin.

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

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

    1. Firebase konsolunda Güvenlik > Kimlik doğrulama'ya gidin.

    2. Projenizin web sunucusu istemci kimliğini ve istemci gizli anahtarını oluşturup alın:

      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 gizli anahtarını Google ile 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 son adımda aldığınız proje web sunucunuzun istemci kimliğini ve istemci gizli anahtarını belirtin.

Play Games services'yı Firebase uygulama bilgilerinizle yapılandırın

  1. Google Play Konsolu'nda 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, listeden Firebase projenizi seçin ve Kullan'ı tıklayın.

  4. Play Games services 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 istemci kimliğini seçin. Bu kimliğin, Play Games oturum açma özelliğini etkinleştirirken belirttiğiniz istemci kimliğiyle aynı olduğundan emin olun.
    3. Yaptığınız değişiklikleri kaydedin.
  5. Hâlâ Play Games services 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. Yaptığınız değişiklikleri kaydedin.
  6. Etkinlikler, Başarılar ve Skor tabloları sayfalarında, oyununuzda kullanmak istediğiniz Play Gameskaynakları oluşturun (hemen kullanmak istemiyorsanız yer tutucu bir giriş oluşturabilirsiniz). Ardından, Etkinlikler, Başarılar veya Liderlik Tabloları sayfalarından birinde Kaynakları al'ı tıklayın ve Android kaynakları snippet'ini uygun bir yere kopyalayın. Google Play Games services eklentisini kurmak için snippet'e ihtiyacınız olacaktır.

    Kaynaklar 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, oyununuzu Play Store'de yayınlamadan önce oyuna giriş yapması gereken kullanıcıların e-posta adreslerini ekleyin.

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

  1. Unity için Play Games eklentisinin en yeni sürümünü indirip çıkarın.

  2. Eklentinin Unity paketini Unity projenize aktarın. Unity paketini, yayın arşivinin current-build dizininde bulabilirsiniz.

  3. Play Games eklentisini kurun:

    1. Android Yapılandırması ekranını açmak için Window > Google Play Games > Setup > Android Setup'ı (Pencere > Google Play Games > Kurulum > Android Kurulumu) tıklayın.
    2. Play Console'dan aldığınız Android kaynak snippet'ini Kaynak Tanımı alanına yapıştırın.
    3. Firebase konsolunda Play Games oturum açma özelliğini etkinleştirirken sağladığınız web sunucusu istemci kimliğinizi İ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, bir oyuncu Play Games ile oturum açmayı seçtiğinde Social.localUser.Authenticate() işlevini çağırın:

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

Firebase ile kimlik doğrulama

Oyununuza Play Games oturum açma özelliğini ekledikten sonra Firebase ile kimlik doğrulamak için Play Games Hizmetleri'nden alınan yetkilendirme kodunu kullanabilirsiniz.

  1. Oyuncu Play Games'i kullanarak oturum açtıktan sonra, oturum açma devam ettirme işleyicisinde oyuncunun hesabı için bir yetkilendirme kodu alın:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Ardından, Play Games Hizmetleri'nden alınan yetkilendirme kodunu bir Firebase kimlik bilgisiyle değiştirin ve oyuncunun 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ı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 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 Realtime Database ve Cloud Storage güvenlik kurallarınızda, auth değişkeninden oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilir ve bunu, kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

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 kullanın.

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

auth.SignOut();