İçeriğe geç

Firebase – Authentication – Swift #10

10 numaralı post'a 10 numara bir konu. Açıkçası android'e oranla firebase işlemleri burada oldukça kolay. Firebase için gerekli dosyaların indirilmesi ve kurulumların yapılması aşamasını atlıyorum. Basit bir instagram clonu yapacağım ve firebase serisi boyunca bundan bahsedeceğiz. İlk işimiz login işlemlerinin gerçekleştirilmesi. Bunun için aşağıdaki tasarımı kullandığımı bilmenizi isterim.

Firebase işlemlerini düzgün bir şekilde gerçekleştirebilmek için AppDelegate dosyasına sırasıyla import FirebaseCore ve daha sonrasında func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { metodunun altına FirebaseApp.configure() eklememiz gerekiyor. Sonrasında işlerimiz oldukça kolay.

Bir login işlemi gerçekleştireceğiz, bunun çeşitli yöntemleri bulunuyor ben e-posta ve password ile login olma yöntemini seçtim bu işlemi Firebase Console üzerinden etkinleştirmemiz gerekiyor.

Daha sonrasında aşağıdaki kodları yazdım. Kodlar son derece basit ve anlaşılır olduğundan dolayı açıklama ihtiyacı duymuyorum. Kabaca import ettik. Auth sınıfı bir singleton yapıda, böylece nereden çağrılırsa çarılsın aynı değer dönüyor. Eğer login olmuşsak bunu başta kontrol ediyor ve ona göre bir segue işlemi gerçekleştiriyoruz. SignOn butonuna basıldığında bilgilerimizle ilgili validasyonlar yapılıyor ve daha sonrasında kayıt işlemi gerçekleştirilip dashboard'a yönlendirilecek. Direkt de tabiki login olabiliyoruz.

import UIKit
import Firebase
class ViewController: UIViewController {

    @IBOutlet weak var passwordRextView: UITextField!
    @IBOutlet weak var epostaTextView: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func viewDidAppear(_ animated: Bool) {
        print("Daha önceden login olunmuş mu, kontrolü yapılıyor.")
        let user = Auth.auth().currentUser
        if(user != nil){
            print("Daha önceden login olunmuş.")
            performSegue(withIdentifier: "toFeed", sender: nil)
        }
    }

    @IBAction func login(_ sender: Any) {

        Auth.auth().signIn(withEmail: epostaTextView.text!, password: passwordRextView.text!) { (AuthDataResult, Error) in
            if(Error == nil){
                self.performSegue(withIdentifier: "toFeed", sender: nil)
            }else
            {
                self.createAlert(title: "HATA", msg: "E-posta ya da parola yanlış.")
            }
        }

    }

    @IBAction func singup(_ sender: Any) {
        if((passwordRextView.text!.isEmpty == false || epostaTextView.text!.isEmpty == false) && passwordRextView.text!.count > 6){
            print("Kullanıcı oluşturuluyor")
            Auth.auth().createUser(withEmail: epostaTextView.text!, password: passwordRextView.text!){ authResult, error in
                if(error == nil){
                    print(authResult)
                    self.performSegue(withIdentifier: "toFeed", sender: nil)
                }else
                {
                    print(error.debugDescription)
                    self.createAlert(title:"Hata", msg: "Bir hata meydana geldi!")
                }
              }

        }else
        {
            self.createAlert(title:"Hata", msg: "Lütfen daha uzun bir kullanıcı adı ya da parola belirleyiniz.")
        }
    }

    func createAlert(title: String, msg : String){
        let alert = UIAlertController(title: title, message: msg, preferredStyle: UIAlertController.Style.alert)
        let alertBtn = UIAlertAction(title: "OK", style: .default, handler: nil)
        alert.addAction(alertBtn)
        present(alert, animated: true)
    }
}

Çıkış işlemi için ise settings ekranına bağladığım controller'a aşağıdaki kodu yazdım.


import UIKit
import Firebase

class SettingsViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    @IBAction func logout(_ sender: Any) {

        do{
            try Auth.auth().signOut()
        }catch{
            let alert = UIAlertController(title: "HATA", message: "Bir hata meydana geldi", preferredStyle: .alert)
            let alertBtn = UIAlertAction(title: "OK", style: .default, handler: nil)
            alert.addAction(alertBtn)
            present(alert, animated: true)
        }

        performSegue(withIdentifier: "toLogin", sender: nil)

    }

}

Bunu sıfırdan yapmaya kalksak gerçekten çok büyük zaman kaybedecektik. Firebase ile özellikle ios'ta bu durum oldukça hızlı. Çok etkilendiğimi söylemeliyim.

Kategori:Swift

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir