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.json
dosyasını uygulamanızın Realtime Database, Cloud Firestore ve Cloud Storage şemasını yansıtacak şekilde düzenleyin. clearData
veexportData
öğelerini Cloud Functions olarak dağıtın.- Uygulamanızdaki işlevler için tetikleyiciler uygulayın.
- Depolama kurallarıyla
clearData
verilerinin 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.json
dosyanızıfunctions
dizininize kopyalayın. - Kullanıcı gizliliği kitaplığının
index.js
kodundan projenizinindex.js
koduna kopyalayın.clearData
kullanmıyorsanızclearData
,clearDatabaseData
,clearFirestoreData
veclearStorageData
işlevlerini kullanmayın.exportData
kullanmıyorsanızexportData
,exportDatabaseData
,exportFirestoreData
veexportStorageData
iş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... } }