Unity'de Firebase Authentication'ı Kullanmaya Başlama

Kullanıcıların e-posta adresi ve şifreyle oturum açma gibi bir veya daha fazla oturum açma yöntemi ve Google ile Oturum Açma ve Facebook'a Giriş gibi birleşik kimlik sağlayıcıları kullanarak oyununuzda oturum açmasına izin vermek için Firebase Authentication'ı kullanabilirsiniz. Bu eğitim, oyununuza e-posta adresi ve şifre oturum açma bilgilerini nasıl ekleyeceğinizi göstererek Firebase Authentication'ı kullanmaya başlamanızı sağlar.

Başlamadan önce

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

  • Unity projenizi kaydedin ve Firebase'i kullanacak şekilde yapılandırın.

    • Unity projeniz zaten Firebase'i kullanıyorsa Firebase için kaydedilmiş ve yapılandırılmış demektir.

    • Unity projeniz yoksa örnek bir uygulama indirebilirsiniz.

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

Firebase'i Unity projenize eklemenin hem Firebase konsolundaki hem de açık Unity projenizdeki görevleri içerdiğini unutmayın (örneğin, Firebase yapılandırma dosyalarını konsoldan indirir ve ardından bunları Unity projenize taşırsınız).

Yeni kullanıcılar için kaydolma

Yeni kullanıcıların e-posta adreslerini ve şifrelerini kullanarak oyununuza kaydolmasını sağlayan bir form oluşturun. Bir kullanıcı formu doldurduğunda kullanıcının sağladığı e-posta adresini ve şifreyi doğrulayın, ardından bunları CreateUserWithEmailAndPasswordAsync yöntemine iletin:

auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
    return;
  }

  // Firebase user has been created.
  Firebase.Auth.AuthResult result = task.Result;
  Debug.LogFormat("Firebase user created successfully: {0} ({1})",
      result.User.DisplayName, result.User.UserId);
});

Mevcut kullanıcıların oturumunu açma

Mevcut kullanıcıların e-posta adreslerini ve şifrelerini kullanarak oturum açmasına izin veren bir form oluşturun. Kullanıcı formu doldurduğunda SignInWithEmailAndPasswordAsync yöntemini çağırın:

auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("SignInWithEmailAndPasswordAsync 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);
});

Kimlik doğrulama durumu değiştirme etkinlik işleyicisi ayarlama ve kullanıcı verilerini alma

Oturum açma ve oturum kapatma etkinliklerine yanıt vermek için genel kimlik doğrulama nesnesine bir etkinlik işleyici ekleyin. Bu işleyici, kullanıcının oturum açma durumu her değiştiğinde çağrılır. İşleyici yalnızca kimlik doğrulama nesnesi tamamen başlatıldıktan ve ağ çağrıları tamamlandıktan sonra çalıştığından, oturum açmış kullanıcıyla ilgili bilgi almak için en iyi yerdir.

FirebaseAuth nesnesinin StateChanged alanını kullanarak etkinlik işleyiciyi kaydedin. Bir kullanıcı başarıyla oturum açtığında etkinlik işleyicide kullanıcı hakkında bilgi alabilirsiniz.

Son olarak, bu nesne Destroy çağrıldığında otomatik olarak OnDestroy yöntemini çağırır. OnDestroy içindeki Auth nesnesinin referanslarını temizleyin.

void InitializeFirebase() {
  auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth.StateChanged += AuthStateChanged;
  AuthStateChanged(this, null);
}

void AuthStateChanged(object sender, System.EventArgs eventArgs) {
  if (auth.CurrentUser != user) {
    bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
        && auth.CurrentUser.IsValid();
    if (!signedIn && user != null) {
      DebugLog("Signed out " + user.UserId);
    }
    user = auth.CurrentUser;
    if (signedIn) {
      DebugLog("Signed in " + user.UserId);
      displayName = user.DisplayName ?? "";
      emailAddress = user.Email ?? "";
      photoUrl = user.PhotoUrl ?? "";
    }
  }
}

void OnDestroy() {
  auth.StateChanged -= AuthStateChanged;
  auth = null;
}

Sonraki adımlar

Diğer kimlik sağlayıcılar ve anonim misafir hesapları için nasıl destek ekleyeceğinizi öğrenin: