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

Kimlik doğrulama sunucunuzu, kullanıcı başarılı bir şekilde oturum açtığında özel imzalı jetonlar oluşturacak şekilde değiştirerek Firebase Authentication'yı ö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:

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

    Bu ilk kurulum adımlarıyla ilgili ayrıntılı talimatları Firebase'i Unity projenize ekleme başlıklı makalede bulabilirsiniz.

  2. Projenizin sunucu anahtarlarını alın:
    1. Firebase konsolunda Ayarlar > Hizmet hesapları sekmesine gidin.
    2. 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 herkese açık/ö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ı için ağ geçididir. Bu nesneye FirebaseAuth.DefaultInstance üzerinden erişilebilir.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Kimlik doğrulama sunucunuzdan alınan jetonla Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync işlevini çağırın.

  1. Kullanıcılar uygulamanızda oturum açtığında oturum açma kimlik bilgilerini (ör. kullanıcı adı ve şifre) kimlik doğrulama sunucunuza gönderin. Sunucunuz kimlik bilgilerini kontrol eder ve geçerli olmaları durumunda özel bir jeton döndürür.
  2. Kimlik doğrulama sunucunuzdan özel jetonu aldıktan sonra, kullanıcının oturum açması için jetonu Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync'ya 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ı bilgileri) bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığına bakılmaksızın 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çmış 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 bu kimliği kullanabilirsiniz.

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

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

auth.SignOut();