Unity'de Firebase Kimlik Doğrulamasına Başlayın

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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

Sen başlamadan önce

Firebase Authentication'ı kullanmadan önce yapmanız gerekenler:

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

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

    • Bir Unity projeniz yoksa örnek bir uygulama indirebilirsiniz.

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

Unity projenize Firebase 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 indirir ve ardından bunları Unity projenize taşırsınız).

yeni kullanıcılar kaydet

Yeni kullanıcıların e-posta adreslerini ve parolalarını kullanarak oyununuza kaydolmasına olanak tanıyan bir form oluşturun. Bir kullanıcı formu doldurduğunda, kullanıcı tarafından sağlanan e-posta adresini ve parolayı 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.FirebaseUser newUser = task.Result;
  Debug.LogFormat("Firebase user created successfully: {0} ({1})",
      newUser.DisplayName, newUser.UserId);
});

Mevcut kullanıcılarda oturum açın

Mevcut kullanıcıların e-posta adreslerini ve şifrelerini kullanarak oturum açmalarına izin veren bir form oluşturun. Bir 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.FirebaseUser newUser = task.Result;
  Debug.LogFormat("User signed in successfully: {0} ({1})",
      newUser.DisplayName, newUser.UserId);
});

Bir kimlik doğrulama durumu değişikliği olay işleyicisi ayarlayın ve kullanıcı verilerini alın

Oturum açma ve oturum kapatma olaylarına yanıt vermek için genel kimlik doğrulama nesnesine bir olay işleyici ekleyin. Bu işleyici, kullanıcının oturum açma durumu değiştiğinde çağrılır. İşleyici yalnızca kimlik doğrulama nesnesi tam olarak başlatıldıktan ve tüm ağ çağrıları tamamlandıktan sonra çalıştığından, oturum açmış kullanıcı hakkında bilgi almak için en iyi yerdir.

FirebaseAuth nesnesinin StateChanged alanını kullanarak olay işleyicisini kaydedin. Bir kullanıcı başarılı bir şekilde oturum açtığında, olay işleyicide kullanıcı hakkında bilgi alabilirsiniz.

Son olarak, bu nesne üzerinde Destroy çağrıldığında, otomatik olarak OnDestroy . Auth nesnesinin referanslarını OnDestroy içinde 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;
    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 nasıl destek ekleyeceğinizi öğrenin: