Firebase ve Parse üzerinde Auth

Bu serinin 1. ve 2. Bölümlerinde, bir Uygulama oluşturma ve çerçeveleri XCode projenize entegre etme sürecini ve Firebase ve Parse veritabanlarının kullanım durumunuza daha iyi uyabilecek benzer ve farklı özelliklere nasıl sahip olduğunu karşılaştırdık.

Bu üçüncü bölümde, kodlamaya başlayacağız ve her iki platformda da çalışan bir Kaydolma / Oturum Açma işlemi için ne kadar kodun gerekli olduğunu değerlendireceğiz.

Ne inşa edeceğiz

Her iki platform da temelde aynı görevleri yerine getireceğinden, tüm kontrollerin benzer şekilde oluşturulduğu aynı Görünüm Denetleyicileri tasarımını kullanacağız:

Ana View Controller, ilgili eylemleri gerçekleştirecek olan Sign-Up ve Sign In View Controller’lara geçişler gerçekleştirecektir.

Firebase kodu

Firebase SDK’yı Bölüm 1‘de anlatıldığı gibi kurduktan sonra, AppDelegate.swift dosyamızda başlatmamız gerekir:

import Firebase

Ardından, application:didFinishLaunchingWithOptions yöntemimizin içinde, return true ifadesinin üzerine aşağıdaki satırı koyarak FirebaseApp nesnesini başlatmamız gerekir:

FirebaseApp.configure()

Şimdi, oturum açma durumu her değiştiğinde çağrılacak olan FIRAuth nesnesini dinlemek için oturum açan kullanıcıya özel bilgilere ihtiyaç duyan tüm Görünümlerimize kod eklemeliyiz.

Bu kodu koymak için iyi bir yer viewWillAppear yöntemidir, böylece görünüm yetkilendirilmemişse veri bile yüklenmez:

handle = Auth.auth().addStateDidChangeListener { (auth, user) in
  // Any other actions that happen upon state change can be written here
}

Ayrıca, böyle bir Görünümden ayrılmadan önce dinleyiciyi ayırmak gerekir, bu nedenle viewWillDisappear yöntemine bu kodu ekleyebiliriz:

Auth.auth().removeStateDidChangeListener(handle!)

Yeni kullanıcıların kaydolması SignUpViewController’ımızda yapılacaktır, bu nedenle bu kodu kullanıcı Singn-Up düğmesine bastığında çağrılan yönteme ekleyelim:

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // Code for error handling and other actions can be put here
}

Yukarıdaki yöntem için iyi bir hata işleme şu şekildedir:

guard let user = authResult?.user, error == nil else {
    print("ERROR CREATING USER \(user.email!).")
    print(error!.localizedDescription)
    return
}
print("\(user.email!) successfuly created.")

Kullanıcıların oturum açması, kullanıcı Oturum Aç düğmesine tıkladığında SignInViewController’ımızda yapılacaktır. Bir kullanıcıda oturum açmak için kod şu şekildedir:

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // Aditional code for error handling and other actions can be put here
}

Daha sonra bu kodu kullanarak giriş yaptıktan sonra kullanıcının bilgilerini alabiliriz:

if let user = user {
  let uid = user.uid
  let email = user.email
  // Aditional properties can be retrieved here 
}

Çıkış işlemi şu şekilde gerçekleştirilir:

firebase.auth().signOut().then(function() {
  // Sign-out successful.
}).catch(function(error) {
  // An error happened.
});

Şimdi, bu oldukça basit ve anlaşılır.
Parse’ın yaklaşımına bir göz atalım:

Parse kodu

Firebase’e benzer şekilde, Bölüm 1‘de açıklandığı gibi Parse IOS SDK’yı yükleyerek başlayacağız, ardından AppDelegate.swift dosyamızda başlatmamız gerekiyor:

import Parse

Parse hemen hemen her yerde barındırılabildiğinden, kullandığınız Parse sunucusu için Uygulama Kimliğinizi, anahtarınızı ve URL’nizi de ayarlamanız zorunludur:

let configuration = ParseClientConfiguration {
    $0.applicationId = "PASTE_YOUR_APPLICATION_ID_HERE"
    $0.clientKey = "PASTE_YOUR_CLIENT_ID_HERE"
    $0.server = "https://parseapi.back4app.com"
}
Parse.initialize(with: configuration)

viewDidAppear metodumuzda, kullanıcının zaten giriş yapıp yapmadığını kontrol edebiliriz, böylece verileri görüntüleyebiliriz:

let currentUser = PFUser.current()
if currentUser != nil {
    // User is NOT logged in. Do not display data.
}

SignUpViewController’ımızda, Sign-Up düğmesine tıklandığında kullanıcıyı oluşturmak için bazı kodlar ekleyelim:

let user = PFUser()
user.username = signUpUsernameField.text
user.password = signUpPasswordField.text
user.signUpInBackground { (success, error) in
    UIViewController.removeSpinner(spinner: sv)
    if success{
        // Success signing up. Display data for this user.
    }else{
        if let descrip = error?.localizedDescription{
            // Error signing up. Do not display data and show error message.
        }
    }
}

Oturum açma işlemi, kullanıcı Oturum Aç düğmesine tıkladığında SignInViewController’ımızda yapılır:

PFUser.logInWithUsername(inBackground: signInUsernameField.text!, password: signInPasswordField.text!) { (user, error) in
    if user != nil {
        // User signed In. Display data.
    }else{
        if let descrip = error?.localizedDescription{
            // User not signed in. Do not display data and show error message
        }
    }
}

Signing Out tarafından gerçekleştirildi:

PFUser.logOutInBackground { (error: Error?) in
    if (error == nil){
        // Success logging out
    }else{
        // Error logging out. Display error message.
    }
}

Sonuç

Firebase kaydolma ve oturum açma işlemleri Parse’a göre birkaç satır daha az koda ihtiyaç duyar, ancak Parse hemen hemen her yerde barındırılabilir, bu da satıcı kilitlenmesi olmadığı için büyük bir avantajdır.

Her ikisi de hata işleme ve kolay kod yönetimi ile kayıt, giriş ve çıkış süreçleri sunar.

Bu nedenle, 3 veya 4 satırlık kodu avantaj olarak görmeyeceğim.
Buna beraberlik diyeceğim.


Leave a reply

Your email address will not be published.