Melakukan Autentikasi dengan Firebase secara Anonim

Anda dapat menggunakan Firebase Authentication untuk membuat dan menggunakan akun anonim sementara untuk melakukan autentikasi dengan Firebase. Dengan akun anonim sementara ini, pengguna yang belum mendaftar ke aplikasi Anda dapat menggunakan data yang dilindungi oleh aturan keamanan. Jika pengguna anonim memutuskan untuk mendaftar ke aplikasi Anda, tautkan kredensial login mereka ke akun anonim tersebut agar mereka dapat terus menggunakan data yang dilindungi tersebut pada sesi-sesi selanjutnya.

Sebelum memulai

  1. Jika Anda belum melakukannya, ikuti langkah-langkah di panduan Memulai.

  2. Aktifkan login secara Anonim:

    • Di bagian Authentication Firebase console, buka halaman Sign in method.
    • Dari halaman Sign in method, aktifkan metode Anonymous sign-in, lalu klik Save.

Melakukan autentikasi dengan Firebase secara anonim

Ketika pengguna yang tidak login menggunakan fitur aplikasi yang mengharuskan autentikasi dengan Firebase, buat pengguna tersebut login secara anonim dengan memanggil signInAnonymously():

try {
  final userCredential =
      await FirebaseAuth.instance.signInAnonymously();
  print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
  switch (e.code) {
    case "operation-not-allowed":
      print("Anonymous auth hasn't been enabled for this project.");
      break;
    default:
      print("Unknown error.");
  }
}

Mengubah akun anonim menjadi akun permanen

Ketika pengguna anonim mendaftar ke aplikasi, Anda dapat mengizinkannya melanjutkan aktivitas dengan akun yang baru dibuat. Misalnya, Anda mungkin menginginkan agar item yang ditambahkan pengguna ke keranjang belanja sebelum mendaftar tersedia di keranjang belanja pengguna pada akun yang baru. Caranya, ikuti langkah-langkah berikut:

  1. Ketika pengguna mendaftar, selesaikan alur login untuk penyedia autentikasi pengguna tersebut hingga, tetapi sebelum, memanggil salah satu metode signInWith. Misalnya, dapatkan token ID Google, token akses Facebook, atau alamat email dan sandi pengguna tersebut.

  2. Dapatkan objek Credential untuk penyedia autentikasi baru:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. Teruskan objek Credential ke metode linkWithCredential() pengguna yang login:

    try {
      final userCredential = await FirebaseAuth.instance.currentUser
          ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "provider-already-linked":
          print("The provider has already been linked to the user.");
          break;
        case "invalid-credential":
          print("The provider's credential is not valid.");
          break;
        case "credential-already-in-use":
          print("The account corresponding to the credential already exists, "
              "or is already linked to a Firebase User.");
          break;
        // See the API reference for the full list of error codes.
        default:
          print("Unknown error.");
      }
      ```
    

Jika panggilan ke linkWithCredential() berhasil, akun baru pengguna dapat mengakses data Firebase akun anonim.

Langkah berikutnya

Setelah pengguna membuat akun baru, akun ini akan disimpan sebagai bagian dari project Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam project, terlepas dari metode login yang digunakan pengguna.

Di aplikasi, Anda bisa mendapatkan informasi profil dasar pengguna dari objek User. Baca bagian Mengelola Pengguna.

Di Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda bisa mendapatkan ID pengguna unik milik pengguna yang login dari variabel auth, dan menggunakannya untuk mengontrol data apa saja yang dapat diakses oleh pengguna.

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

Untuk memproses logout pengguna, panggil signOut():

await FirebaseAuth.instance.signOut();