Memulai Firebase Authentication di Platform Apple

Anda dapat menggunakan Firebase Authentication untuk mengizinkan pengguna login ke aplikasi Anda menggunakan satu atau beberapa metode login, termasuk login dengan alamat email dan sandi, serta penyedia identitas gabungan seperti Login dengan Google dan Login dengan Facebook. Tutorial ini akan memandu Anda memulai Firebase Authentication dengan menunjukkan cara menambahkan login dengan alamat email dan sandi ke aplikasi Anda.

Menghubungkan aplikasi ke Firebase

  1. Instal Firebase SDK.
  2. Di Firebase console, tambahkan aplikasi Anda ke project Firebase.

Menambahkan Firebase Authentication ke aplikasi Anda

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka File > Add Packages.
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Pilih library Firebase Authentication.
  5. Tambahkan flag -ObjC ke bagian Other Linker Flags pada setelan build target Anda.
  6. Setelah selesai, Xcode akan otomatis mulai me-resolve dan mendownload dependensi Anda di latar belakang.

(Opsional) Membuat prototipe dan melakukan pengujian dengan Firebase Local Emulator Suite

Sebelum membahas cara aplikasi Anda mengautentikasi pengguna, kami akan memperkenalkan serangkaian alat yang dapat digunakan untuk membuat prototipe dan menguji fungsionalitas Authentication: Firebase Local Emulator Suite. Jika Anda sedang memilih teknik dan penyedia autentikasi, mencoba berbagai model data dengan data publik dan pribadi menggunakan Authentication dan Firebase Security Rules, atau membuat prototipe desain UI login, akan sangat bermanfaat jika Anda bisa bekerja secara lokal tanpa men-deploy layanan langsung.

Emulator Authentication adalah bagian dari Local Emulator Suite, yang memungkinkan aplikasi Anda berinteraksi dengan konten dan konfigurasi database yang diemulasi, serta dengan resource project yang diemulasi (fungsi, database lain, dan aturan keamanan).

Hanya diperlukan beberapa langkah untuk menggunakan emulator Authentication:

  1. Menambahkan satu baris kode ke konfigurasi pengujian aplikasi untuk terhubung ke emulator.
  2. Menjalankan firebase emulators:start dari root direktori project lokal Anda.
  3. Menggunakan UI Local Emulator Suite untuk pembuatan prototipe interaktif, atau REST API emulator Authentication untuk pengujian noninteraktif.

Panduan terperinci tersedia di bagian Menghubungkan aplikasi Anda ke emulator Authentication. Untuk mengetahui informasi selengkapnya, lihat pengantar Local Emulator Suite.

Sekarang, mari kita lanjutkan dengan cara mengautentikasi pengguna.

Menginisialisasi Firebase SDK

Dalam delegasi aplikasi, impor Firebase SDK terlebih dahulu:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

Kemudian, pada metode application:didFinishLaunchingWithOptions:, inisialisasi objek FirebaseApp:

Swift

// Use Firebase library to configure APIs
FirebaseApp.configure()

Objective-C

// Use Firebase library to configure APIs
[FIRApp configure];

Memproses status autentikasi

Untuk setiap tampilan aplikasi yang membutuhkan informasi tentang pengguna yang login, tambahkan pemroses ke objek FIRAuth. Pemroses ini akan dipanggil setiap kali status login pengguna berubah.

Tambahkan pemroses dalam metode viewWillAppear pengontrol tampilan:

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

Lepaskan pemroses dalam metode viewWillDisappear pengontrol tampilan:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Mendaftarkan pengguna baru

Buat formulir yang dapat dipakai pengguna baru untuk mendaftar ke aplikasi Anda menggunakan alamat email dan sandi. Saat pengguna selesai mengisi formulir, validasi alamat email dan sandi yang diberikan oleh pengguna, lalu teruskan ke metode createUser:

Swift

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Objective-C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

Memproses login pengguna yang ada

Buat formulir yang dapat dipakai pengguna yang ada untuk login menggunakan alamat email dan sandinya. Saat pengguna selesai mengisi formulir, panggil metode signIn:

Swift

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

Mendapatkan informasi pengguna

Setelah pengguna berhasil login, Anda bisa mendapatkan informasi tentang pengguna. Misalnya, dalam pemroses status autentikasi Anda:

Swift

if let user = user {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

Objective-C

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

Langkah berikutnya

Pelajari cara menambahkan dukungan untuk penyedia identitas lainnya dan akun tamu anonim: