Firebase ekibi, kullanıcılarınızın verilerini kontrol etmesine yardımcı olmak için iki yaygın kullanıcı verisi işlemini basitleştiren bir kitaplık oluşturdu:
clearData: Kullanıcının verilerini belirli Firebase hizmetlerinden siler (şu anda Realtime Database, Firestore ve Storage) bunların içeriğini sildiklerinde Firebase Authentication aracılığıyla.exportData: Kullanıcıların Firebase hizmetlerindeki verilerinin kopyasını bir JSON dizesine kaydeder ve kendileri için kolayca indirebilmeleri amacıyla Cloud Storage hizmetine yükler.
İşlevleri uygulamanıza nasıl ekleyeceğinizi öğrenmek için okumaya devam edin veya Firebase kullanıcı gizliliği GitHub deposu.
Uygulamanıza clearData veya exportData ekleyin
Kitaplıktaki clearData ve exportData işlevleri Realtime Database, Cloud Storage ve Cloud Firestore uygulamalarındaki veriler üzerinde çalışan Cloud Functions olarak uygulanır. İşlevleri kendi uygulamanıza eklemek üç adımlı bir işlemdir:
- Kitaplığın
user_privacy.jsondosyasını uygulamanızın Realtime Database, Cloud Firestore ve Cloud Storage şemasını yansıtacak şekilde düzenleyin. clearDataveexportDataöğelerini Cloud Functions olarak dağıtın.- Uygulamanızdaki işlevler için tetikleyiciler uygulayın.
- Depolama kurallarıyla
clearDataverilerinin güvenliğini sağlayın.
Kitaplığın user_privacy.json dosyasını düzenleyin
Başlamak için Firebase kullanıcı gizliliği GitHub deposunu klonlayın veya indirin.
Bu işlemi tamamladıktan sonra functions/user_privacy.json dosyasını bir metin düzenleyicide açın. JSON dosyasında, clearData ve exportData işlevlerinin Realtime Database, Cloud Firestore ve Cloud Storage'da uygulamanızın verilerini bulmak için kullandığı bir dizi özelleştirilebilir yol bulunur. Uygulamanız bu hizmetlerden yalnızca bir veya ikisini kullanıyorsa, kullanılmayan hizmetlerle ilişkili JSON nesnelerini silerek başlayın.
Nesneler kaldırıldıktan sonra, kalan hizmetlerin yerine yer tutucu değerleri, uygulamanızın kullandığı gerçek veri yapılarıyla uyumlu olmalıdır.
Kullanıcı verilerine Realtime Database yol ekle
user_privacy.json öğesini, uygulamanızın Realtime Database örneği için özelleştirmek isterseniz "database" altındaki yer tutucu dize listesini kullanıcı verilerine giden gerçek yollarla değiştirin:
... "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 ] }, ...
İşlevlerden yalnızca birini uygulamanıza eklemek istiyorsanız, kendi verilerinizle doldurmak yerine diğer işlevin nesnesini silebilirsiniz.
Kullanıcı verileri içeren Cloud Firestore nesneyi ekleyin
user_privacy.json öğesini uygulamanızın Cloud Firestore örneği için özelleştirmek amacıyla "firestore" altındaki yer tutucu nesnelerin listesini kullanıcı verilerini içeren gerçek Cloud Firestore nesneleriyle değiştirin:
... "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 ] }, ...
İşlevlerden yalnızca birini uygulamanıza eklemek istiyorsanız, kendi verilerinizle doldurmak yerine diğer işlevin nesnesini silebilirsiniz.
Cloud Storage paketini ve dosya adını kullanıcı verileriyle ekleyin
user_privacy.json özelliğini uygulamanızın Cloud Storage örneği için özelleştirmek isterseniz "storage" altındaki yer tutucu depolama paketini ve dosya adını gerçek değerlerle değiştirin:
... "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"] ] }, ...
İşlevlerden yalnızca birini uygulamanıza eklemek istiyorsanız, kendi verilerinizle doldurmak yerine diğer işlevin nesnesini silebilirsiniz.
clearData ve exportData öğelerini Cloud Functions olarak dağıtın
Cloud Functions hakkında bilginiz yoksa Cloud Functions Başlangıç kılavuzunda bu özellikleri nasıl kullanacağınızı öğrenebilirsiniz.
Cloud Functions'ı istediğiniz gibi hissettikten sonra clearData ve exportData işlevlerini projenize ekleyin:
- Özelleştirilmiş
user_data.jsondosyanızıfunctionsdizininize kopyalayın. - Kullanıcı gizliliği kitaplığının
index.jskodundan projenizinindex.jskoduna kopyalayın.clearDatakullanmıyorsanızclearData,clearDatabaseData,clearFirestoreDataveclearStorageDataişlevlerini kullanmayın.exportDatakullanmıyorsanızexportData,exportDatabaseData,exportFirestoreDataveexportStorageDataişlevlerini kullanmayın.
- İşlevlerinizi dağıtın.
clearData ve exportData için tetikleyiciler uygulayın
Her işlev için farklı bir tetikleyici gerekir:
clearData: Kullanıcı, hesabını Authentication üzerinden sildiğinde tetiklenir.exportData: Bir HTTP isteği tarafından tetiklenir.
clearData tetikleyicisi uygulama
Bir clearData etkinliğini tetiklemek için Authentication ürününden bir yöntem kullanmanız gerekir. Şu durumda:
Henüz yapmadıysanız uygulamanıza Authentication ekleyin: Apple platformları, Android veya web.
Ardından, platformunuzda Authentication SDK'sının delete yöntemini çağırmak için bir yöntem ekleyin:
iOS ve üzeri
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();
}
});
exportData tetikleyicisi uygulama
Bir exportData tetikleyicisi uygulamak için uygulamanıza şunu çağıran bir düğme veya bağlantı ekleyin:
HTTP isteği aracılığıyla işlevi geri yükleyebilirsiniz. İşlevleri çağırma hakkında daha fazla bilgi edinin.
Arama işlevleri (HTTP istekleri aracılığıyla) üzerinden HTTP üzerinden.
İstek ayrıntıları:
- Tür:
POST - URL:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData - Gövde:
<var>CURRENT_USER'S_UID</var>
İşlevi doğrudan Firebase Hosting içinde çağırın
Uygulamanız, Firebase Hosting üzerinde barındırılan bir web uygulamasıysa şunu çağırabilirsiniz:
Sitenin firebase.json dosyasındaki bir rewrite girişi aracılığıyla clearData işlevi:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Depolama kurallarıyla exportData verilerinin güvenliğini sağlayın
Kullanıcılarınızın dışa aktarılan veriler gizli, Cloud Storage ekleyin dışa aktaran kullanıcının erişimini kısıtlayan kurallar belirleyin.
- Firebase konsolunda Depolama Alanı'na gidin.
- Kurallar sekmesini açın.
- Aşağıdaki kuralı yapıştırın, ardından Yayınla'yı tıklayın:
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... } }