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
- Tambahkan Firebase ke project JavaScript.
- Jika Anda belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
- Aktifkan autentikasi anonim:
- Di Firebase console, buka bagian Auth.
- Di halaman Sign-in Methods, aktifkan metode login Anonymous.
- Opsional: Jika telah mengupgrade project ke Firebase Authentication dengan Identity Platform, Anda dapat mengaktifkan pembersihan otomatis. Saat setelan ini diaktifkan, akun anonim yang berusia lebih dari 30 hari akan otomatis dihapus. Dalam project yang mengaktifkan pembersihan otomatis, autentikasi anonim tidak akan diperhitungkan lagi dalam batas penggunaan atau kuota penagihan. Lihat Pembersihan otomatis.
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:
- Panggil metode
signInAnonymously
:API modular web
import { getAuth, signInAnonymously } from "firebase/auth"; const auth = getAuth(); signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... });
API dengan namespace web
firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
- Jika metode
signInAnonymously
selesai tanpa mengalami error, observer yang terdaftar dalamonAuthStateChanged
akan terpicu dan Anda dapat memperoleh data akun pengguna anonim dari objekUser
:API modular web
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/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } });
API dengan namespace web
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/v8/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 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:
- 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. Dapatkan
AuthCredential
untuk penyedia autentikasi baru:Login dengan Google
API modular web
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
API dengan namespace web
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Login dengan Facebook
API modular web
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
API dengan namespace web
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
Login dengan email-sandi
API modular web
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
API dengan namespace web
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
Teruskan objek
AuthCredential
ke metodelink
pengguna yang login:API modular web
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); });
API dengan namespace web
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.
Pembersihan otomatis
Jika Anda telah mengupgrade project ke Firebase Authentication dengan Identity Platform, Anda dapat mengaktifkan pembersihan otomatis di Firebase console. Jika fitur ini diaktifkan, Firebase akan otomatis menghapus akun anonim yang berusia lebih dari 30 hari. Dalam project yang mengaktifkan pembersihan otomatis, autentikasi anonim tidak akan diperhitungkan dalam batas penggunaan atau kuota penagihan.
- Setiap akun anonim yang dibuat setelah pembersihan otomatis diaktifkan dapat otomatis dihapus dalam waktu 30 hari setelah dibuat.
- Akun anonim yang dibuat sebelum pembersihan otomatis diaktifkan akan memenuhi syarat untuk penghapusan otomatis mulai 30 hari setelah fitur ini diaktifkan.
- Jika Anda menonaktifkan pembersihan otomatis, akun anonim yang dijadwalkan untuk dihapus akan tetap dijadwalkan untuk dihapus. Akun ini tidak diperhitungkan dalam batas penggunaan atau kuota penagihan.
- Jika Anda "mengupgrade" akun anonim dengan menautkannya ke metode login apa pun, akun tersebut tidak akan otomatis dihapus.
Jika ingin melihat jumlah pengguna yang akan terkena dampaknya jika Anda mengaktifkan fitur ini, dan Anda telah mengupgrade project ke Firebase Authentication dengan Identity Platform, Anda dapat memfilter berdasarkan is_anon
di Cloud Logging.
Langkah berikutnya
Setelah pengguna dapat melakukan autentikasi dengan Firebase, Anda dapat mengontrol akses mereka ke data di database Firebase Anda menggunakan aturan Firebase.