Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Melakukan Autentikasi dengan Firebase secara Anonim Menggunakan JavaScript

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 agar mereka dapat terus menggunakan data yang dilindungi pada sesi-sesi selanjutnya.

Sebelum memulai

  1. Tambahkan Firebase ke project JavaScript.
  2. Jika Anda belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
  3. Aktifkan autentikasi anonim:
    1. Di Firebase console, buka bagian Auth.
    2. Di halaman Metode Login, aktifkan metode login Anonim.

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 mengikuti langkah berikut:

  1. Panggil metode signInAnonymously:

    Web versi 9

    import { getAuth, signInAnonymously } from "firebase/auth";
    
    const auth = getAuth();
    signInAnonymously(auth)
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });

    Web versi 8

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    Di sini juga Anda dapat menemukan dan menangani error. Untuk mengetahui daftar kode error, lihat Dokumentasi Referensi Auth.
  2. Jika metode signInAnonymously selesai tanpa mengalami error, observer yang terdaftar dalam onAuthStateChanged akan terpicu dan Anda dapat memperoleh data akun pengguna anonim dari objek User:

    Web versi 9

    import { getAuth, onAuthStateChanged } from "firebase/auth";
    
    const auth = getAuth();
    onAuthStateChanged(auth, (user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/firebase.User
        const uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

    Web versi 8

    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/firebase.User
        var uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

Mengubah akun anonim menjadi akun permanen

Ketika pengguna anonim mendaftar ke aplikasi, Anda dapat memungkinkan mereka melanjutkan aktivitas dengan akun yang baru dibuat. Misalnya, Anda dapat mempertahankan item yang ditambahkan pengguna sebelum mendaftar agar tetap berada di keranjang belanja pada akun baru mereka. Caranya, ikuti langkah-langkah berikut:

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

    Login dengan Google

    Web versi 9

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web versi 8

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    Login dengan Facebook

    Web versi 9

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web versi 8

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    Login dengan email-sandi

    Web versi 9

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web versi 8

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. Teruskan objek AuthCredential ke metode link pengguna yang login:

    Web versi 9

    import { getAuth, linkWithCredential } from "firebase/auth";
    
    const auth = getAuth();
    linkWithCredential(auth.currentUser, credential)
      .then((usercred) => {
        const user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

    Web versi 8

    auth.currentUser.linkWithCredential(credential)
      .then((usercred) => {
        var user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

Jika panggilan ke link berhasil, akun baru pengguna dapat mengakses data Firebase akun anonim.

Langkah berikutnya

Setelah pengguna dapat melakukan autentikasi dengan Firebase, Anda dapat mengontrol akses mereka ke data di database Firebase Anda menggunakan aturan Firebase.