Unity kullanarak Şifre Tabanlı Hesapları kullanarak Firebase ile kimlik doğrulama

Kullanıcılarınızın e-posta adreslerini ve şifrelerini kullanarak Firebase ile kimlik doğrulaması yapmasını sağlamak ve uygulamanızın şifre tabanlı hesaplarını yönetmek için Firebase Authentication'ı kullanabilirsiniz.

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).

Firebase.Auth.FirebaseAuth sınıfına erişme

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;

Şifre tabanlı hesap oluşturma

Şifreyle yeni bir kullanıcı hesabı oluşturmak için uygulamanızın oturum açma kodunda aşağıdaki adımları tamamlayın:

  1. Yeni bir kullanıcı, uygulamanızın kayıt formunu kullanarak kaydolduğunda, uygulamanızın gerektirdiği yeni hesap doğrulama adımlarını (ör. yeni hesabın şifresinin doğru yazıldığını ve karmaşıklık gereksinimlerinizi karşıladığını doğrulamak) tamamlayın.
  2. Yeni kullanıcının e-posta adresini ve şifresini FirebaseAuth.CreateUserWithEmailAndPassword adlı alana ileterek yeni bir hesap oluşturun:
    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);
    });
    

Bir kullanıcının e-posta adresi ve şifresiyle oturum açma

Bir kullanıcının şifreyle oturum açmasını sağlamaya yönelik adımlar, yeni hesap oluşturma adımlarına benzer. Uygulamanızın oturum açma işlevinde aşağıdakileri yapın:

  1. Bir kullanıcı uygulamanızda oturum açtığında kullanıcının e-posta adresini ve şifresini FirebaseAuth.SignInWithEmailAndPassword ile paylaşı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);
    });
    
  2. Ayrıca, kimlik bilgilerini oluşturabilir ve diğer iş akışlarında olduğu gibi oturum açabilirsiniz:
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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);
    });
    

Önerilen: E-posta numaralandırma korumasını etkinleştirin

E-posta adreslerini parametre olarak alan bazı Firebase Authentication yöntemleri, e-posta adresinin kayıtlı olması gerektiğinde (örneğin, bir e-posta adresi ve şifreyle oturum açarken) veya kullanılmaması gerektiğinde (örneğin, bir kullanıcının e-posta adresini değiştirirken) kayıtlı olması halinde belirli hatalara neden olur. Bu yöntem, kullanıcılara belirli telafiler önermek için yararlı olsa da, kullanıcılarınızın kayıtlı e-posta adreslerini bulmak için kötü niyetli kişiler tarafından kötüye kullanılabilir.

Bu riski azaltmak amacıyla Google Cloud gcloud aracını kullanarak projenizde e-posta numaralandırma korumasını etkinleştirmenizi öneririz. Bu özelliği etkinleştirdiğinizde Firebase Authentication'ın hata bildirme davranışının değiştiğini unutmayın: Uygulamanızın daha spesifik hatalara dayanmadığından emin olun.

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();