Lihat yang baru dari Firebase di Google I/O 2022. Pelajari lebih lanjut

Memulai Firebase Authentication di Flutter

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

Hubungkan aplikasi Anda ke Firebase

Instal dan inisialisasi Firebase SDK untuk Flutter jika Anda belum melakukannya.

Tambahkan Firebase Authentication ke aplikasi Anda

  1. Dari root proyek Flutter Anda, jalankan perintah berikut untuk menginstal plugin:

    flutter pub add firebase_auth
    
  2. Setelah selesai, bangun kembali aplikasi Flutter Anda:

    flutter run
    
  3. Impor plugin dalam kode Dart Anda:

    import 'package:firebase_auth/firebase_auth.dart';
    

Untuk menggunakan penyedia autentikasi, Anda harus mengaktifkannya di Firebase console . Buka halaman Metode Masuk di bagian Firebase Authentication untuk mengaktifkan login dengan Email/Sandi dan penyedia identitas lain yang Anda inginkan untuk aplikasi Anda.

(Opsional) Prototipe dan uji dengan Firebase Local Emulator Suite

Sebelum berbicara tentang bagaimana aplikasi Anda mengautentikasi pengguna, mari perkenalkan seperangkat alat yang dapat Anda gunakan untuk membuat prototipe dan menguji fungsionalitas Otentikasi: Firebase Local Emulator Suite. Jika Anda memutuskan di antara teknik dan penyedia autentikasi, mencoba model data yang berbeda dengan data publik dan pribadi menggunakan Authentication dan Aturan Keamanan Firebase, atau membuat prototipe desain UI masuk, dapat bekerja secara lokal tanpa menerapkan layanan langsung bisa menjadi ide yang bagus .

Emulator Authentication adalah bagian dari Local Emulator Suite, yang memungkinkan aplikasi Anda berinteraksi dengan konten dan konfigurasi database yang diemulasi, serta secara opsional sumber daya proyek yang diemulasi (fungsi, database lain, dan aturan keamanan).

Menggunakan emulator Otentikasi hanya melibatkan beberapa langkah:

  1. Menambahkan baris kode ke konfigurasi pengujian aplikasi Anda untuk terhubung ke emulator.

  2. Dari root direktori proyek lokal Anda, jalankan firebase emulators:start .

  3. Menggunakan UI Suite Emulator Lokal untuk pembuatan prototipe interaktif, atau REST API emulator Otentikasi untuk pengujian non-interaktif.

  4. Panggil useAuthEmulator() untuk menentukan alamat dan port emulator:

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

Panduan mendetail tersedia di Hubungkan aplikasi Anda ke emulator Otentikasi . Untuk informasi selengkapnya, lihat pengantar Local Emulator Suite .

Sekarang mari kita lanjutkan dengan cara mengautentikasi pengguna.

Periksa status autentikasi saat ini

Firebase Auth menyediakan banyak metode dan utilitas untuk memungkinkan Anda mengintegrasikan autentikasi aman ke dalam aplikasi Flutter baru atau yang sudah ada. Dalam banyak kasus, Anda perlu mengetahui tentang status autentikasi pengguna Anda, seperti apakah mereka masuk atau keluar.

Firebase Auth memungkinkan Anda untuk berlangganan secara realtime ke status ini melalui Stream . Setelah dipanggil, aliran menyediakan peristiwa langsung dari status autentikasi pengguna saat ini, dan kemudian menyediakan peristiwa berikutnya setiap kali status autentikasi berubah.

Ada tiga metode untuk mendengarkan perubahan status autentikasi:

authStateChanges()

Untuk berlangganan perubahan ini, panggil metode authStateChanges() pada instance FirebaseAuth Anda:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

Peristiwa dipecat ketika hal berikut terjadi:

  • Tepat setelah pendengar terdaftar.
  • Saat pengguna masuk.
  • Saat pengguna saat ini keluar.

idTokenChanges()

Untuk berlangganan perubahan ini, panggil metode idTokenChanges() pada instance FirebaseAuth Anda:

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

Peristiwa dipecat ketika hal berikut terjadi:

  • Tepat setelah pendengar terdaftar.
  • Saat pengguna masuk.
  • Saat pengguna saat ini keluar.
  • Ketika ada perubahan pada token pengguna saat ini.

userChanges()

Untuk berlangganan perubahan ini, panggil metode userChanges() pada instance FirebaseAuth Anda:

FirebaseAuth.instance
  .userChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

Peristiwa dipecat ketika hal berikut terjadi:

  • Tepat setelah pendengar terdaftar.
  • Saat pengguna masuk.
  • Saat pengguna saat ini keluar.
  • Ketika ada perubahan pada token pengguna saat ini.
  • Saat metode berikut yang disediakan oleh FirebaseAuth.instance.currentUser dipanggil:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

Status autentikasi yang bertahan

Firebase SDK untuk semua platform memberikan dukungan yang siap pakai untuk memastikan bahwa status autentikasi pengguna Anda tetap ada selama aplikasi dimulai ulang atau pemuatan ulang halaman.

Pada platform asli seperti Android & iOS, perilaku ini tidak dapat dikonfigurasi dan status autentikasi pengguna akan dipertahankan pada perangkat di antara aplikasi dimulai ulang. Pengguna dapat menghapus data cache aplikasi menggunakan pengaturan perangkat, yang akan menghapus semua status yang ada yang disimpan.

Pada platform web, status autentikasi pengguna disimpan di IndexedDB . Anda dapat mengubah persistensi untuk menyimpan data di penyimpanan lokal menggunakan Persistence.LOCAL . Jika diperlukan, Anda dapat mengubah perilaku default ini menjadi hanya mempertahankan status autentikasi untuk sesi saat ini, atau tidak sama sekali. Untuk mengonfigurasi setelan ini, panggil metode berikut FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); . Anda masih dapat memperbarui persistensi untuk setiap instance Auth menggunakan setPersistence(Persistence.NONE) .

// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);

Langkah selanjutnya

Jelajahi panduan tentang masuk dan mendaftarkan pengguna dengan layanan identitas dan autentikasi yang didukung.