Auth di Firebase & Parse

Pada Bagian 1 dan Bagian 2 dari seri ini, kami membandingkan proses pembuatan Aplikasi dan mengintegrasikan kerangka kerja ke proyek XCode Anda dan bagaimana Firebase dan Parse database memiliki fitur yang serupa dan berbeda yang mungkin lebih cocok untuk kasus penggunaan Anda.

Pada bagian ketiga ini, kita akan mulai membuat kode dan mengevaluasi berapa banyak kode yang diperlukan untuk membuat proses Sign-Up / Sign In bekerja di kedua platform.

Apa yang akan kami bangun

Karena kedua platform pada dasarnya akan melakukan tugas yang sama, kami akan menggunakan desain View Controllers yang sama persis dengan semua kontrol yang dibuat dengan cara yang sama:

Pengontrol Tampilan utama akan melakukan pengalihan ke Pengontrol Tampilan Daftar dan Masuk, yang akan melakukan tindakan masing-masing.

Kode Firebase

Setelah menginstal Firebase SDK seperti yang dijelaskan di Bagian 1, kita perlu menginisialisasinya di file AppDelegate.swift:

import Firebase

Kemudian, di dalam metode application:didFinishLaunchingWithOptions, kita harus menginisialisasi objek FirebaseApp, dengan meletakkan baris berikut di atas pernyataan return true:

FirebaseApp.configure()

Sekarang, kita harus menambahkan kode ke semua View yang membutuhkan informasi yang bersifat privat bagi pengguna yang masuk untuk mendengarkan objek FIRAuth, yang akan dipanggil setiap kali status masuk berubah.

Tempat yang baik untuk meletakkan kode ini adalah di metode viewWillAppear, sehingga tampilan tidak akan memuat data jika tidak diotorisasi:

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

Kita juga perlu melepaskan pendengar sebelum kita meninggalkan View tersebut, jadi dalam metode viewWillDisappear, kita dapat menambahkan kode ini:

Auth.auth().removeStateDidChangeListener(handle!)

Mendaftarkan pengguna baru akan dilakukan di SignUpViewController kita, jadi mari kita tambahkan kode ini dalam metode yang akan dipanggil ketika pengguna menekan tombol Singn-Up:

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

Penanganan kesalahan yang baik untuk metode di atas terlihat seperti ini:

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

Memasukkan pengguna akan dilakukan di SignInViewController, ketika pengguna mengklik tombol Masuk. Kode untuk memasukkan pengguna terlihat seperti ini:

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
}

Kemudian kita akhirnya dapat mengambil detail pengguna setelah masuk menggunakan kode ini:

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

Proses Sign Out dicapai dengan:

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

Sekarang, itu cukup sederhana dan mudah.
Mari kita lihat pendekatan Parse:

Parse kode

Sama halnya dengan Firebase, kita akan mulai dengan menginstal Parse IOS SDK, seperti yang dijelaskan pada Bagian 1, kemudian, kita perlu menginisialisasinya di file AppDelegate.swift:

import Parse

Karena Parse dapat dihosting di mana saja, maka Anda juga harus menyiapkan App Id, key, dan URL untuk host Parse yang Anda gunakan:

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)

Pada metode viewDidAppear, kita dapat memeriksa apakah pengguna sudah login, sehingga kita dapat menampilkan data:

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

Di SignUpViewController kita, mari tambahkan beberapa kode untuk membuat pengguna ketika tombol Sign-Up diklik:

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

Proses masuk dilakukan di SignInViewController, ketika pengguna mengklik tombol Masuk:

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
        }
    }
}

Keluar dilakukan oleh:

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

Kesimpulan

Pendaftaran dan sign-in Firebase membutuhkan beberapa baris kode lebih sedikit daripada yang dibutuhkan Parse, tetapi Parse dapat dihosting di mana saja, yang merupakan keuntungan besar karena tidak ada penguncian dari vendor.

Keduanya menawarkan proses pendaftaran, masuk dan keluar dengan penanganan kesalahan dan manajemen kode yang mudah.

Dengan demikian, saya tidak akan menganggap 3 atau 4 baris kode sebagai keuntungan.
Saya akan menyebutnya sebagai hasil imbang.


Leave a reply

Your email address will not be published.