Agar Anda dapat membantu pengguna mengontrol data mereka, tim Firebase telah membuat library untuk menyederhanakan dua proses data pengguna yang umum:
clearData
: menghapus data pengguna dari layanan Firebase tertentu (saat ini Realtime Database, Firestore, dan Storage) saat pengguna tersebut menghapus akunnya melalui Firebase Authentication.exportData
: menyimpan salinan data pengguna dari layanan Firebase ke string JSON, dan menguploadnya ke Cloud Storage sehingga pengguna tersebut dapat dengan mudah mendownloadnya sendiri.
Lanjutkan membaca artikel ini untuk mengetahui cara menambahkan fungsi ke aplikasi Anda, atau langsung lihat kodenya di repo GitHub privasi pengguna Firebase.
Menambahkan clearData
atau exportData
ke aplikasi Anda
Fungsi clearData
dan exportData
di library diimplementasikan sebagai Cloud Functions yang beroperasi pada data di dalam Realtime Database, Cloud Storage, dan Cloud Firestore. Proses untuk menambahkan fungsi di aplikasi Anda terdiri dari tiga langkah:
- Edit file
user_privacy.json
library agar sesuai dengan skema Realtime Database, Cloud Firestore, dan Cloud Storage aplikasi Anda. - Deploy
clearData
danexportData
sebagai Cloud Functions. - Implementasikan pemicu fungsi tersebut di aplikasi Anda.
- Amankan data
clearData
dengan aturan penyimpanan.
Mengedit file user_privacy.json
library
Untuk memulai, clone atau download repo GitHub privasi pengguna Firebase.
Setelah selesai melakukannya, buka functions/user_privacy.json
di editor teks. File json memiliki serangkaian jalur yang dapat disesuaikan dan digunakan oleh fungsi clearData
dan exportData
untuk menemukan data aplikasi Anda di Realtime Database, Cloud Firestore, dan Cloud Storage. Jika aplikasi Anda hanya menggunakan satu atau dua dari layanan tersebut, mulailah dengan menghapus objek JSON yang terkait dengan layanan yang tidak digunakan.
Setelah objek dihapus, Anda bisa mulai mengganti nilai placeholder layanan yang tersisa dengan struktur data sebenarnya yang digunakan aplikasi Anda.
Menambahkan jalur Realtime Database ke data pengguna
Guna menyesuaikan user_privacy.json
untuk instance Realtime Database aplikasi Anda, ganti daftar string placeholder di "database"
dengan jalur sebenarnya ke data pengguna:
... "database": { "clear": [ "/users/UID_VARIABLE", // Replace with your "/admins/UID_VARIABLE" // actual RTDB paths ], "export": [ "/users/UID_VARIABLE", // Replace with your "/admins/UID_VARIABLE" // actual RTDB paths ] }, ...
Jika hanya ingin menambahkan salah satu fungsi ke aplikasi, Anda dapat menghapus objek fungsi lain, daripada mengisinya dengan data.
Menambahkan objek Cloud Firestore yang berisi data pengguna
Guna menyesuaikan user_privacy.json
untuk instance Cloud Firestore aplikasi, ganti daftar objek placeholder di "firestore"
dengan objek Cloud Firestore sebenarnya yang berisi data pengguna:
... "firestore": { "clear": [ {"collection": "users", "doc": "UID_VARIABLE", "field": "name"}, {"collection": "users", "doc": "UID_VARIABLE"}, // Replace with your {"collection": "admins", "doc": "UID_VARIABLE"} // actual Firestore paths ], "export": [ {"collection": "users", "doc": "UID_VARIABLE", "field": "name"}, {"collection": "users", "doc": "UID_VARIABLE"}, // Replace with your {"collection": "admins", "doc": "UID_VARIABLE"} // actual Firestore paths ] }, ...
Jika hanya ingin menambahkan salah satu fungsi ke aplikasi, Anda dapat menghapus objek fungsi lain, daripada mengisinya dengan data.
Menambahkan bucket Cloud Storage dan nama file dengan data pengguna
Guna menyesuaikan user_privacy.json
untuk instance Cloud Storage aplikasi, ganti bucket penyimpanan placeholder dan nama file di "storage"
dengan nilai sebenarnya:
... "storage": { "clear": [ // Replace with your actual storage data ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"], ["clear-exportappspot.com", "UID_VARIABLE"] ], "export": [ // Replace with your actual storage data ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"] ] }, ...
Jika hanya ingin menambahkan salah satu fungsi ke aplikasi, Anda dapat menghapus objek fungsi lain, daripada mengisinya dengan data.
Men-deploy clearData
dan exportData
sebagai Cloud Functions
Jika Anda belum memahami Cloud Functions, baca cara menggunakannya dalam Panduan Memulai Cloud Functions.
Setelah Anda familier dengan Cloud Functions, tambahkan fungsi clearData
dan exportData
ke project Anda:
- Salin
user_data.json
yang sudah disesuaikan ke direktorifunctions
Anda. - Salin kode dari
index.js
library privasi pengguna keindex.js
project Anda.- Jika Anda tidak menggunakan
clearData
, hapus fungsiclearData
,clearDatabaseData
,clearFirestoreData
, danclearStorageData
. - Jika Anda tidak menggunakan
exportData
, hapus fungsiexportData
,exportDatabaseData
,exportFirestoreData
, danexportStorageData
.
- Jika Anda tidak menggunakan
- Deploy fungsi Anda.
Mengimplementasikan pemicu untuk clearData
dan exportData
Setiap fungsi memerlukan pemicu yang berbeda:
clearData
: dipicu saat pengguna menghapus akunnya melalui Authentication.exportData
: dipicu oleh permintaan HTTP.
Mengimplementasikan pemicu clearData
Untuk memicu peristiwa clearData
, Anda perlu menggunakan metode dari Authentication. Jika Anda belum melakukannya, tambahkan Authentication ke aplikasi Anda: platform Apple, Android, atau web.
Kemudian, tambahkan cara untuk memanggil metode delete
Authentication SDK untuk platform Anda:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Android
FirebaseAuth.getCurrentUser().delete();
Web
firebase.auth().currentUser.delete().catch(function(error) {
if (error.code === 'auth/requires-recent-login') {
window.alert('Please sign-in and try again.');
firebase.auth().signOut();
}
});
Mengimplementasikan pemicu exportData
Untuk mengimplementasikan pemicu exportData
, tambahkan tombol atau link ke aplikasi Anda yang memanggil fungsi melalui permintaan HTTP. Baca informasi selengkapnya mengenai cara mengaktifkan fungsi melalui HTTP di Memanggil fungsi melalui permintaan HTTP.
Detail permintaan:
- Jenis:
POST
- URL:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Isi:
<var>CURRENT_USER'S_UID</var>
Memanggil fungsi secara langsung di Firebase Hosting
Jika aplikasi Anda berupa aplikasi web yang dihosting di Firebase Hosting, Anda dapat memanggil fungsi clearData
melalui entri rewrite
di file firebase.json
situs tersebut:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Mengamankan data exportData
dengan aturan penyimpanan
Untuk menjaga kerahasiaan data pengguna yang diekspor, tambahkan aturan Cloud Storage yang membatasi akses ke pengguna pengekspor.
- Buka Storage di Firebase console.
- Buka tab Rules.
- Tempel aturan berikut, lalu klik Publish:
service firebase.storage { match /b/{bucket}/o { match /exportData { // Only allow access to the user who requested the export match /{uid} { allow read, write: if request.auth.uid == uid } match /{uid}/{path=**} { allow read, write: if request.auth.uid == uid } } // Other application rules... } }