Özel kimlik doğrulama sistemi ve Unity kullanarak Firebase ile kimlik doğrulama

Bir kullanıcı başarıyla oturum açtığında özel imzalı jetonlar oluşturmak için kimlik doğrulama sunucunuzu değiştirerek Firebase Authentication'ı özel bir kimlik doğrulama sistemiyle entegre edebilirsiniz. Uygulamanız bu jetonu alır ve Firebase ile kimlik doğrulamak için kullanır.

Başlamadan önce

  1. Firebase Authentication'ı kullanabilmek için şunları yapmanız gerekir:

    • Unity projenizi Firebase projenize kaydedin.
    • Unity projenize Firebase Unity SDK'yı (özellikle FirebaseAuth.unitypackage) ekleyin.

    Bu ilk kurulum adımlarıyla ilgili ayrıntılı talimatları Firebase'i Unity projenize ekleme bölümünde bulabilirsiniz.

  2. Projenizin sunucu anahtarlarını alın:
    1. Projenizin ayarlarında Hizmet Hesapları sayfasına gidin.
    2. Hizmet Hesapları sayfasının Firebase Admin SDK bölümünün alt kısmında Yeni Özel Anahtar Oluştur'u tıklayın.
    3. Yeni hizmet hesabının ortak/özel anahtar çifti otomatik olarak bilgisayarınıza kaydedilir. Bu dosyayı kimlik doğrulama sunucunuza kopyalayın.

Firebase ile kimlik doğrulama

FirebaseAuth sınıfı, tüm API çağrılarına yönelik ağ geçididir. FirebaseAuth.DefaultInstance üzerinden erişilebilir.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Kimlik doğrulama sunucunuzdan gelen jetonla Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync öğesini çağırın.

  1. Kullanıcılar uygulamanızda oturum açtığında oturum açma kimlik bilgilerini (örneğin, kullanıcı adları ve şifreleri) kimlik doğrulama sunucunuza gönderin. Sunucunuz kimlik bilgilerini kontrol eder ve geçerliyse özel jeton döndürür.
  2. Kimlik doğrulama sunucunuzdan özel jetonu aldıktan sonra, kullanıcının oturum açmak için jetonu Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync hizmetine iletin:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync 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 kullanıcının oturum açtığı kimlik bilgilerine (kullanıcı adı ve şifre, telefon numarası veya kimlik doğrulama sağlayıcı bilgisi) bağlanır. Bu yeni hesap Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada kullanıcıyı tanımlamak için kullanılabilir.

  • Uygulamalarınızda kullanıcının temel profil bilgilerini Firebase.Auth.FirebaseUser nesnesinden alabilirsiniz:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // 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, oturum açan kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak kullanıcıların, birden fazla kimlik doğrulama sağlayıcı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz.

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

auth.SignOut();