"yandex-verification" content="ef2e7dca9790d4b5" />

Unity Projenize Firebase Authentication Entegrasyonu-2

En son güncellendiği tarih: May 29

Önceki yazımızda Firebase konsolunda projemizi oluşturarak SDK'yı projemize Import edip Firebase ile Entegre ettik. Şimdi ise Projemize giriş ve üylik işlemleri için bir form oluşturacağız.


FIREBASE AUTHENTICATION İÇİN FORM OLUŞTURMA VE SIGN-UP / LOG-IN İŞLEMLERİ

Öncelikle Firebase Konsola giderek Authentication için gerekli ayarları yapalım.

Firebase Auth


Firebase Auth

Artık Unity de devam edebiliriz. Unity Editör üzerinde aşağıdaki ekrana benzer bir form oluşturun:

1. E-posta girişi için ve Şifre için birer InputField nesnesi ekliyoruz. şifre firişinin maskelenmesi için InputField seçili iken Inspector penceresinden InputFieldScript > Content Type > Password seçimi yapın.

2. Üye olmak ve giriş yapmak için iki adet Button eklkiyoruz.

Auth Scene

Şimdi kodlama kısmına geçelim. Bir C# Script oluşturarak Sahnede bir nesneye sürükleyip bırakarak iliştirin. Tavsiyem Boş bir Nesne oluşturup Scriptlerinizi ona iliştirmenizdir. Bu en kullanışlı yoldur. Ben AuthScript isimli Boş nesneye iliştirdim.


Oluşturduğunuz script aşağıdaki gibi görünecektir.

Öncelikle Sign-up yani üye olmak için kullanacağımız fonksiyonu ve Log-in yani üye girişi yapacağımız fonksiyonu ekleyelim. Bunun için Firebase.Auth kütüphanesine ihtiyacımız var. Ayrıca yapacağımız işlemleri yönlendirmek için bazı bool tipinde değişkenler ekledim. ilerledikçe nerelerde kullanacağımızı göreceksiniz. Olusturduğumuz FirebaseAuth auth ise bizim kullanıcımızın hesabına erişerek işlemleri yapacağımız değişkendir.


Ayrıca Sahnemize eklediğimiz Form nesneleri için de değişkenler oluşturup bunlara editör üzerinden Buton ve Textfield öğelerini sürükleyerek tanımlamamız gerekiyor. Böylece kod içinden bu öğeleri kontrol edebileceğiz. Bunun için de UnityEngine.UI kütüphanesini ekledik.

Bu Scriptimiz bizim kullanıcı hesabı ile bağımız olduğundan sahne değişimlerinde yok edilmesin diye Start() içinde DontDestroyOnLoad(this); komutu ile ölümsüzleştiriyoruz.

Ayrıca auth = FirebaseAuth.DefaultInstance; ile auth değişkenine FirebaseAuth.DefaultInstance atamasını yapıyoruz.

Yine Start içinde Butonlarımıza tıklanınca çalıştıracağı SignupWithEmailPassword(string email, string password) ve LoginWithEmailPassword(UserEmailInput.text, PasswordInput.text)) fonksiyonlarını atadık.


Not: Dilerseniz kod içinde buton nesnelerini almak yerine Unity editörde bu butonlara fonksiyon ataması yapabilirsiniz. Bunun için Buton seçili iken Inspector üzerinden Button>OnClick kısmında + ile satır açıp burada Object kısmına scriptinizin bağlı olduğu nesneyi sürükleyin daha sonra yan taraftan Function kısmından bu scriptte yazdığınız fonksiyonu seçerek atama yapabilirsiniz. Bu şekilde yenı satırlarla istediğiniz kadar fonksiyon ataması yapabilirsiniz. Bu daha pratik olsa da kod içinden ulaşmak size daha fazla kontrol sağlar. Mesela e-posta veya şifre girilmeden butonları pasif yapıp buraları doldurunca aktive edebilirsiniz ve daha bir sürü şey...


Kullanıcımız her Uygulama açışında tekrar giriş yapmasın diye Uygulama kapatırken SingOut yapmazsak tekrar açıldığında oturumu devam ettirebiliriz. Bunu da Start içinde bir if() yapısı ile kontrol ediyoruz. Zaten giriş yapılmışsa isLoginSucces değerini true yapıp bu sayfayı atlayabiliriz.


SendEmailToVerify() ise üye hesabının doğrulanması için girilen e-posta adresine bir doğrulama postası gönderir. Son olarak da Kayıtla beraber açık olan hesabı SignOut() ile kapatır.(Eposta doğrulanmadan kullanılmasın diye.)


Update() fonksiyonu bildiğiniz üzere her frame de bir tekrar çalışır. Burada isLoginSucces dogru ise ve eposta dogrulandı ise oyunumuzun ana menüsüne ait sahneyi yüklüyoruz. Eposta doğrulanmamışsa tekrar bır eposta göderiyoruz siz isterseniz burada sadece uyarı da gösterebilirsiniz. isSignupSucces olduğunda ise eğer göndermedi isek eposta gönderiyoruz. Ek olarak Scriptimiz her sahnede çalışacağı için bunları sadece bu sahnede yapsın diye if ((SceneManager.GetActiveScene().name == "AuthScene")) yapısı içinde yazdık. Update için son olarak bu sahne dışında herhangi bir zamanda SignOut olursa Bu sahneye dönülsün diye if (auth.CurrentUser == null && SceneManager.GetActiveScene().name != "AuthScene" ) kontrolü içinde Sahne geçişi ekledik.


Scriptimizin son hali ise şöyle:

Evet scriptimizi yazıp kaydettik, editör üzerinden Hierarchy penceresinde scriptimizin bağlı olduğu nesneyi seçerek Inspector penceresinde değişkenlerimize Buton ve Inputfield'ları iliştirdi isek hazırız demektir. Şimdi çalıştırıp deneyebilirsiniz.


Önemli Not: Yaptığınız bu işlem ile kullanıcılara ait verileri Firebase alanınızın Authentication kısmında saklarsınız. Dolayısı ile bu uygulamanızı yayınlarken bir Gizlilik Sözleşmesi de yayınlayarak kişisel verilerin korunması kanunu kapsamında verileri nasıl kullanacağınızı ilan etmelisiniz. Bu konuyu başka bir yazıda daha detaylı anlatacağım ancak öncesinde sorularınız olursa yazabilirsiniz.


Elimden geldiğince anlatmaya çalıştım. Eksiklerim varsa lütfen yazın.



725 görüntüleme
BE IN

TOUCH

Please fill your contact details below: