Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Otentikasi dengan Firebase menggunakan Akun Berbasis Kata Sandi di Platform Apple

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat menggunakan Firebase Authentication agar pengguna dapat mengautentikasi dengan Firebase menggunakan alamat email dan sandi mereka, dan untuk mengelola akun berbasis sandi aplikasi Anda.

Sebelum kamu memulai

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan proyek aplikasi Anda terbuka, arahkan ke File > Add Packages .
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Pilih pustaka Firebase Authentication.
  5. Setelah selesai, Xcode akan secara otomatis mulai menyelesaikan dan mengunduh dependensi Anda di latar belakang.

Selanjutnya, lakukan beberapa langkah konfigurasi:

  1. Jika Anda belum menghubungkan aplikasi ke proyek Firebase, lakukan dari konsol Firebase .
  2. Aktifkan masuk Email/Kata Sandi:
    1. Di konsol Firebase , buka bagian Auth .
    2. Pada tab Metode masuk , aktifkan metode masuk Email/sandi dan klik Simpan .

Buat akun berbasis kata sandi

Untuk membuat akun pengguna baru dengan sandi, selesaikan langkah-langkah berikut dalam aktivitas masuk aplikasi Anda:

  1. Impor modul FirebaseCore di UIApplicationDelegate Anda, serta modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cepat

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurasikan instance bersama FirebaseApp dalam metode application(_:didFinishLaunchingWithOptions:) delegasi aplikasi Anda:

    SwiftUI

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

    Cepat

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Jika Anda menggunakan SwiftUI, Anda harus membuat delegasi aplikasi dan melampirkannya ke struktur App Anda melalui UIApplicationDelegateAdaptor atau NSApplicationDelegateAdaptor . Anda juga harus menonaktifkan swizzling delegasi aplikasi. Untuk informasi selengkapnya, lihat petunjuk SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Saat pengguna baru mendaftar menggunakan formulir pendaftaran aplikasi Anda, selesaikan setiap langkah validasi akun baru yang diperlukan aplikasi Anda, seperti memverifikasi bahwa kata sandi akun baru telah diketik dengan benar dan memenuhi persyaratan kerumitan Anda.
  5. Buat akun baru dengan mengirimkan alamat email dan kata sandi pengguna baru ke createUser .

    Cepat

    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) {
      // ...
    }];
    Jika akun baru berhasil dibuat, pengguna sudah masuk, dan Anda bisa mendapatkan data akun pengguna dari objek hasil yang diteruskan ke metode callback.

Masuk pengguna dengan alamat email dan kata sandi

Langkah-langkah untuk memasukkan pengguna dengan kata sandi serupa dengan langkah-langkah untuk membuat akun baru. Dalam aktivitas masuk aplikasi Anda, lakukan hal berikut:

  1. Impor modul FirebaseCore di UIApplicationDelegate Anda, serta modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cepat

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurasikan instance bersama FirebaseApp dalam metode application(_:didFinishLaunchingWithOptions:) delegasi aplikasi Anda:

    SwiftUI

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

    Cepat

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Jika Anda menggunakan SwiftUI, Anda harus membuat delegasi aplikasi dan melampirkannya ke struktur App Anda melalui UIApplicationDelegateAdaptor atau NSApplicationDelegateAdaptor . Anda juga harus menonaktifkan swizzling delegasi aplikasi. Untuk informasi selengkapnya, lihat petunjuk SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Saat pengguna masuk ke aplikasi Anda, teruskan alamat email dan sandi pengguna untuk signIn .

    Cepat

    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) {
      // ...
    }];
    Jika pengguna berhasil masuk, Anda bisa mendapatkan data akun pengguna dari objek hasil yang diteruskan ke metode callback.

Direkomendasikan: Aktifkan perlindungan pencacahan email

Beberapa metode Firebase Authentication yang menggunakan alamat email sebagai parameter melontarkan kesalahan tertentu jika alamat email tidak terdaftar saat harus didaftarkan (misalnya, saat masuk dengan alamat email dan kata sandi), atau didaftarkan saat harus tidak digunakan (misalnya, saat mengubah alamat email pengguna). Meskipun hal ini berguna untuk menyarankan solusi khusus kepada pengguna, hal ini juga dapat disalahgunakan oleh pelaku jahat untuk menemukan alamat email yang didaftarkan oleh pengguna Anda.

Untuk memitigasi risiko ini, sebaiknya aktifkan perlindungan enumerasi email untuk project Anda menggunakan fitur gcloud Google Cloud. Perhatikan bahwa mengaktifkan fitur ini akan mengubah perilaku pelaporan kesalahan Firebase Authentication: pastikan aplikasi Anda tidak bergantung pada kesalahan yang lebih spesifik.

Langkah selanjutnya

Setelah pengguna masuk untuk pertama kali, akun pengguna baru dibuat dan ditautkan ke kredensial—yaitu, nama pengguna dan sandi, nomor telepon, atau informasi penyedia autentikasi—yang digunakan pengguna untuk masuk. Akun baru ini disimpan sebagai bagian dari project Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam project Anda, terlepas dari cara pengguna login.

  • Di aplikasi Anda, Anda bisa mendapatkan informasi profil dasar pengguna dari objek User . Lihat Kelola Pengguna .

  • Dalam Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda bisa mendapatkan ID pengguna unik pengguna yang masuk dari variabel auth , dan menggunakannya untuk mengontrol data apa yang dapat diakses pengguna.

Anda dapat mengizinkan pengguna masuk ke aplikasi Anda menggunakan beberapa penyedia autentikasi dengan menautkan kredensial penyedia autentikasi ke akun pengguna yang ada.

Untuk mengeluarkan pengguna, panggil signOut: .

Cepat

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
  

Objective-C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Anda mungkin juga ingin menambahkan kode penanganan kesalahan untuk berbagai kesalahan autentikasi. Lihat Menangani Kesalahan .