Otentikasi dengan Firebase Secara Anonim

Anda dapat menggunakan Firebase Authentication untuk membuat dan menggunakan akun anonim sementara untuk mengautentikasi dengan Firebase. Akun anonim sementara ini dapat digunakan untuk memungkinkan pengguna yang belum mendaftar ke aplikasi Anda untuk bekerja dengan data yang dilindungi oleh aturan keamanan. Jika pengguna anonim memutuskan untuk mendaftar ke aplikasi Anda, Anda dapat menautkan kredensial masuk mereka ke akun anonim sehingga mereka dapat terus bekerja dengan data yang dilindungi di sesi mendatang.

Sebelum kamu memulai

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

  2. Aktifkan masuk Anonim:

    • Di bagian Otentikasi Firebase console, buka halaman Metode masuk .
    • Dari halaman Metode masuk , aktifkan metode masuk Anonim dan klik Simpan .

Otentikasi dengan Firebase secara anonim

Saat pengguna yang logout menggunakan fitur aplikasi yang memerlukan autentikasi dengan Firebase, login pengguna 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.");
  }
}

Ubah akun anonim menjadi akun permanen

Saat pengguna anonim mendaftar ke aplikasi Anda, Anda mungkin ingin mengizinkan mereka melanjutkan pekerjaannya dengan akun baru mereka—misalnya, Anda mungkin ingin membuat item yang ditambahkan pengguna ke keranjang belanja mereka sebelum mereka mendaftar tersedia di akun baru mereka. keranjang belanja akun. Untuk melakukannya, selesaikan langkah-langkah berikut:

  1. Saat pengguna mendaftar, selesaikan alur masuk untuk penyedia autentikasi pengguna hingga, tetapi tidak termasuk, memanggil salah satu metode signInWith -. Misalnya, dapatkan token ID Google pengguna, token akses Facebook, atau alamat email dan kata sandi.

  2. Dapatkan objek Credential untuk penyedia otentikasi 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 masuk:

    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 selanjutnya

Setelah pengguna membuat akun baru, akun ini disimpan sebagai bagian dari proyek Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam proyek Anda, apa pun metode masuk yang digunakan pengguna.

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

Di 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() :

await FirebaseAuth.instance.signOut();