Firebase Login İşlemleri-IOS

S.Tunahan Ustuntepe
5 min readJan 28, 2023

--

HOŞGELDİN!!!

Login işlemleri için Firebase Authentication işleminin kurulumundan kullanımına kadar olan kısımları göreceğiz.

Xcode programımızda bir çalışma dosyası oluşturarak işlemlere başlıyoruz.

Firebase sayfasına gelerek projemiz için bir proje oluşturuyoruz.

Projemizi Oluşturalım

Projemize bir isim verdikten sonra devam ederiz.

Açılan pencereden IOS u seçmemiz gerekiyor.

Açılan ekranda bizden bundle ID mizi istemektedir. Nerede olduğu aşağıdaki resimde gösterilmektedir.

Bundle ID projemize geldikten sonra

Devam ediyoruz.

Download config file dosyamızı indirip projemizin içine atıyoruz.

Bu adımdan sonra Firebase SDK ‘i projemize yüklememiz gerekiyor.Biz burada CocoaPods ile yüklme gerçekleştireceğiz.

Açılan pencerede gösterilen adımları yapmamız gerekiyor.

Gösterilen adımlara geçiyoruz.

Projemizi kapattıktan sonra proje klasörümüze terminalde gitmemiz gerekiyor.

Terminale gittikten sonra pod init çalıştırılır.

pod init

Proje klasörümüzün içine geldikten sonra “Podfile” dosyasının indirilmiş olması gerekmektedir.Dosyayı açıyoruz.

Firebase’in hangi özelliklerini kullanacak isek onları eklememiz gerekiyor.

yapılanları kaydettikten sonra terminalimize gelip “pod install — repo-update” çalıştırırız.Eklemiş olduğumuz özelliklerin dosyaları indirilmeye başlar.

pod install --repo-update

Artık dosyalarımız yüklendi şimdi Firebase ‘i initialization yapmamız gerekiyor.

Tekrardan Firebase sitesindeki kaldığımız yerden devam ediyoruz.

Belirtilmiş olan yerlerdeki kodları projemizde bulunan “AppDelegete.swift” dosyasına yazmamız gerekiyor.

En Sonunda Firebase de Next diyerek kurulumumuzu tamamlamış oluyoruz…

Authentication Sayfamızdan Kullanıcının Hangi İşlemlerle Login olmasını istiyorsak onu etkinleştirmemiz gerekiyor.

EMAİL/PASSWORD İLE LOGİN İŞLEMİ :

Enabled Yapılması gerekiyor.

Şimdi uygulamamıza gelerek sign In ve sign Up işlemlerini gerçekleştireceğiz.

Sign Up:

Button içerisine kayıt olmak için gerekli kodları yazıyoruz.

 if textFieldEmail.text != "" && textFieldPassword.text != ""{
Auth.auth().createUser(withEmail: textFieldEmail.text!, password: textFieldPassword.text!) { authData, authError in

if authError != nil {

//Alert Message
self.makeAlert(title: "Error", msg: authError?.localizedDescription ?? "Error")
}else {
print("Kayıt işlemi Gerçekleştirildi , PerformSegue yapılabilir...")
}
}
}else {
//Alert Message

makeAlert(title: "Error", msg: "Username/Password Bilgilerini Kontrol Ediniz.")

}
Auth.auth().createUser(withEmail: textFieldEmail.text!, password: textFieldPassword.text!) { AuthData, AuthError in

}

“Auth.auth().createUser(…)” methodumuz ile kayıt işlemimizi gerçekleştiririz. Bundan önce İf şartı oluşturarak kullanıcı email ve password kısmını boş bırakıp bırakmadığını kontrol etmemiz gerekiyor.

Daha sonrasında kayıt işlemi gerçekleştirilirken “Clojure” ile bir hata çıkıp çıkmadığını kontrol etmek için tekrar bir if-else kontrolü yaparak kullanıcıya bir hata oluştuğunda bunun bilgisini vermemiz uygulama için güzel bir tercih olacaktır.Bunun için Alert özelliğinden yararlandık.

Şimdi Uygulamamızı Çalıştırıyoruz…

  • Firebase’in kendi hata mesajları mevcut,şifreyi 6 karakterli girmemiz gerektiğini bize söylüyor.

Tüm bilgiler doğru girildiğinde Sign Up buttonuna basılınca Consolumuzda kayıt gerçekleştiğini belirten print yazımısı göreceğiz.Bu aşamada Performsegue yaparak kullanıcıyı uygulamanın Ana sayfasına yönlendirebilirsiniz.

Firebase’de kullanıcılar kısmından kayıt işlemini görebiliriz.

Sign In :

Button içerisine kayıt olmak için gerekli kodları yazıyoruz.

    
@IBAction func signInButton(_ sender: Any) {


if textFieldEmail.text != "" && textFieldPassword.text != ""{
Auth.auth().signIn(withEmail: textFieldEmail.text!, password: textFieldPassword.text!) { authData, authError in

if authError != nil {

//Alert Message
self.makeAlert(title: "Error", msg: authError?.localizedDescription ?? "Error")
}else {
print("Giriş Başarılı, PerformSegue Yapılabilir...")

}
}
}else {
//Alert Message

makeAlert(title: "Error", msg: "Username/Password Girilmemiş Olabilir Kontrol Ediniz.")

}
}

Sign Up işleminde olduğu gibi gerekli kontrollerimizi if — else ile yapmamız gerekiyor.

Buradan sonra bilgiler doğru ise giriş işlemimiz BAŞARILI bir şekilde gerçekleşiyor TEBRİKLER…

Giriş Yapıldıktan Sonra Kullanıcı Hatırlama İşlemi

Projemizde bulunana “SceneDelegete.swift” dosyasına geliyoruz.Window nesnemizin olması gerekiyor.Burada Scene methodumuzun içerisine gerekli kodlarımız yazarız.

import FirebaseAuth

let currenctUser = Auth.auth().currentUser
// Bununla bir kişi giriş yaptıysa Güncel kullanıcı kim bunu alabiliyoruz.

Kullanıcı daha önceden giriş yaptıysa “Entry Point(uygulamanın hangi storyboard dan başlayacağını gösteren ok )” imizi Ana sayfadan başlatmamız gerekiyor bunun için şu kodları yazmamız gerekiyor.

 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {


let currenctUser = Auth.auth().currentUser
if currenctUser != nil {
let board = UIStoryboard(name: "Main", bundle: nil)
let tabBar = board.instantiateViewController(identifier: "tabBar") as! UITabBarController
window?.rootViewController = tabBar
}




guard let _ = (scene as? UIWindowScene) else { return }
}

board → storyboard ımızı tanımlıyoruz.

tabBar → Projede tabBar ile ana sayfaya gittiğimden dolayı tabbar üzerinden gitmiş olacağız.Bu ViewController ‘da olabilirdi onun içinde aynısını yapıyoruz.

“window?.rootViewController” → diyerek açılacak sayfanın tabBar olsun diyoruz.

Bu işlem bittikten sonra Kullanıcı bir kere giriş yaptıktan sonra kendisi çıkış işlemi gerçekleştirmediği sürece tekrardan giriş ekranına ulaşmaz.

Logout :

Bir çıkış buttonu içerisine yazabiliriz.Nerede kullanmak istiyorsak bu geliştiriciye kalmış

Auth.auth().signOut() 

Kullanıcının çıkış yapmasını sağlar ve uygulamayı tekrar açtığında kullanıcıyı hatırlama gibi bir durumu ortadan kaldırdığı için tekrardan kullanıcıya Login ekranı gösterilecektir.Tabi ki sayfa yönlendirmesi size kalıyor :)

GoogleSignIn :

Google ile giriş yapabilmek için bir sonraki gönderime göz atabilirsin.

--

--