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öntemiyle ve Google ile oturum açma ve Facebook ile giriş gibi birleştirilmiş kimlik sağlayıcılarla oyununuzda oturum açmasına izin vermek için Firebase Authentication kullanabilirsiniz. Bu eğitimde, oyununuza e-posta adresi ve şifreyle oturum açma özelliğini nasıl ekleyeceğiniz gösterilerek Firebase Authentication ile çalışmaya başlamanız sağlanır.

Başlamadan önce

Firebase Authentication kullanabilmek için:

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

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

    • Unity projeniz yoksa örnek bir uygulama indirebilirsiniz.

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

Firebase'i Unity projenize eklemenin hem Firebase konsolunda hem de açık Unity projenizde görevler içerdiğini unutmayın (örneğin, Firebase yapılandırma dosyalarını konsoldan indirip Unity projenize taşırsınız).

Yeni kullanıcıları kaydetme

Yeni kullanıcıların e-posta adreslerini ve şifrelerini kullanarak oyununuza kaydolmasına olanak tanıyan bir form oluşturun. 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çmalarına olanak tanıyan bir form oluşturun. Kullanıcı formu tamamladığında 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şikliği etkinlik işleyicisi ayarlama ve kullanıcı verilerini alma

Oturum açma ve 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 tüm ağ çağrıları tamamlandıktan sonra çalıştığı için oturum açmış kullanıcı hakkında bilgi almak için en iyi yerdir.

Etkinlik işleyiciyi FirebaseAuth nesnesinin StateChanged alanı kullanılarak kaydedin. Bir kullanıcı başarıyla giriş yaptığında etkinlik işleyicide kullanıcı hakkında bilgi edinebilirsiniz.

Son olarak, bu nesneye Destroy çağrısı yapıldığında otomatik olarak OnDestroy çağrısı yapılı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 konuk hesapları için destek ekleme hakkında bilgi edinin: