Agar Anda dapat membantu pengguna mengontrol datanya, tim Firebase telah membuat library untuk menyederhanakan 2 proses data pengguna umum:
clearData
: menghapus data pengguna dari layanan Firebase tertentu (saat ini antara lain Realtime Database, Firestore, dan Storage) ketika 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.
Baca selengkapnya di bawah untuk mengetahui cara menambahkan fungsi ke aplikasi Anda, atau langsung ke 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 sesuai dengan skema Realtime Database, Cloud Firestore, dan Cloud Storage aplikasi Anda. - Terapkan
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 itu berisi serangkaian lokasi yang dapat disesuaikan dan digunakan oleh fungsi clearData
dan exportData
untuk menemukan data aplikasi Anda dalam Realtime Database, Cloud Firestore, dan Cloud Storage. Jika aplikasi Anda hanya menggunakan 1 atau 2 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 lokasi Realtime Database ke data pengguna
Guna menyesuaikan user_privacy.json
untuk instance Realtime Database aplikasi Anda, ganti daftar string placeholder di "database"
dengan lokasi 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 Anda hanya ingin menambahkan salah satu fungsi ke aplikasi, Anda dapat menghapus objek fungsi lain, daripada mengisinya dengan data Anda.
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 Anda hanya ingin menambahkan salah satu fungsi ke aplikasi, Anda dapat menghapus objek fungsi lain, daripada mengisinya dengan data Anda.
Menambahkan bucket Cloud Storage dan nama file dengan data pengguna
Guna menyesuaikan user_privacy.json
untuk instance Cloud Storage aplikasi Anda, 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 Anda hanya ingin menambahkan salah satu fungsi ke aplikasi, Anda dapat menghapus objek fungsi lain, daripada mengisinya dengan data Anda.
Menerapkan clearData
dan exportData
sebagai Cloud Functions
Jika Anda belum memahami Cloud Functions, baca cara menggunakannya dalam Panduan Memulai Cloud Functions.
Setelah puas 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
- Terapkan fungsi Anda:
Menerapkan pemicu untuk clearData
dan exportData
Setiap fungsi memerlukan pemicu yang berbeda:
clearData
: dipicu ketika pengguna menghapus akun mereka melalui Authentication.exportData
: dipicu oleh permintaan HTTP.
Menerapkan pemicu clearData
Untuk memicu peristiwa clearData
, Anda perlu menggunakan metode dari Authentication. Jika Anda belum melakukannya, tambahkan Authentication ke aplikasi Anda: iOS, Android, atau web.
Kemudian, tambahkan cara untuk mengaktifkan metode delete
dari 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(functions(error) {if (error.code === 'auth/require-recent-login') {window.alert('Harap login dan coba lagi.'); firebase.auth().signOut(); } });
Menerapkan pemicu exportData
Untuk menerapkan pemicu exportData
, tambahkan tombol atau link ke aplikasi Anda yang mengaktifkan fungsi melalui permintaan HTTP. Baca informasi selengkapnya mengenai cara mengaktifkan fungsi melalui HTTP di bagian Memanggil fungsi melalui permintaan HTTP.
Detail Permintaan:
- Type:
POST
- URL:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Body:
<var>CURRENT_USER'S_UID</var>
Mengaktifkan fungsi secara langsung di Firebase Hosting
Jika aplikasi Anda berupa aplikasi web yang dihosting di Firebase Hosting, Anda dapat mengaktifkan 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 Aturan.
- Tempel aturan berikut, lalu klik Publikasikan:
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... } }