Firebase ekibi, kullanıcılarınızın verilerini kontrol etmesine yardımcı olmak için iki yaygın kullanıcı verisi sürecini basitleştiren bir kitaplık oluşturdu:
clearData
: Kullanıcı, hesabını Firebase Authentication yoluyla sildiğinde belirli Firebase hizmetlerinden (şu anda Realtime Database, Firestore ve Storage) verilerini siler.exportData
: Firebase hizmetlerindeki kullanıcı verilerinin bir kopyasını bir JSON dizesine kaydeder ve bunu kendilerinin kolayca indirebilmesi için Cloud Storage'a yükler.
İşlevleri uygulamanıza nasıl ekleyeceğinizi öğrenmek için okumaya devam edin veya doğrudan Firebase kullanıcı gizliliği GitHub deposundaki koda geçin.
Uygulamanıza clearData
veya exportData
ekleyin
Kitaplıktaki clearData
ve exportData
işlevleri, Gerçek Zamanlı Veritabanı, Bulut Depolama ve Bulut Firestore'daki veriler üzerinde çalışan Bulut İşlevleri olarak uygulanır. İşlevleri kendi uygulamanıza eklemek üç adımlı bir işlemdir:
- Kitaplığın
user_privacy.json
dosyasını, uygulamanızın Gerçek Zamanlı Veritabanını, Cloud Firestore'unu ve Cloud Storage şemasını yansıtacak şekilde düzenleyin. -
clearData
dağıtın veexportData
Bulut İşlevleri olarak dağıtın. - Uygulamanızdaki işlevler için tetikleyiciler uygulayın.
-
clearData
verilerini depolama kurallarıyla koruyun.
Kitaplığın user_privacy.json
dosyasını düzenleyin
Başlamak için Firebase kullanıcı gizliliği GitHub deposunu kopyalayın veya indirin.
Bunu yaptığınızda, bir metin düzenleyicide functions/user_privacy.json
dosyasını açın. Json dosyasında, clearData
ve exportData
işlevlerinin uygulamanızın verilerini Realtime Database, Cloud Firestore ve Cloud Storage'da 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 gittikten sonra, kalan hizmetlerin yer tutucu değerlerini uygulamanızın kullandığı gerçek veri yapılarıyla değiştirmeye başlayabilirsiniz.
Kullanıcı verilerine Gerçek Zamanlı Veritabanı yolları ekleme
user_privacy.json
uygulamanızın Gerçek Zamanlı Veritabanı örneği için özelleştirmek amacıyla, "database"
altındaki yer tutucu dizelerin 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 ] }, ...
Uygulamanıza işlevlerden yalnızca birini eklemek istiyorsanız diğer işlevin nesnesini verilerinizle doldurmak yerine silebilirsiniz.
Kullanıcı verilerini içeren Cloud Firestore nesneleri ekleme
user_privacy.json
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 ] }, ...
Uygulamanıza işlevlerden yalnızca birini eklemek istiyorsanız diğer işlevin nesnesini verilerinizle doldurmak yerine silebilirsiniz.
Cloud Storage paketini ve dosya adını kullanıcı verileriyle birlikte ekleyin
user_privacy.json
dosyasını uygulamanızın Cloud Storage örneği için özelleştirmek üzere "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"] ] }, ...
Uygulamanıza işlevlerden yalnızca birini eklemek istiyorsanız diğer işlevin nesnesini verilerinizle doldurmak yerine silebilirsiniz.
clearData
ve exportData
Bulut İşlevleri olarak dağıtın
Henüz Bulut İşlevlerine aşina değilseniz Bulut İşlevleri Başlarken kılavuzunda bunların nasıl kullanılacağını okuyun.
Cloud Functions'ı kullanmaya alıştıktan sonra clearData
ve exportData
işlevlerini projenize ekleyin:
- Özelleştirilmiş
user_data.json
dosyanızıfunctions
dizininize kopyalayın. - Kodu, kullanıcı gizliliği kitaplığının
index.js
dosyasından projenizinindex.js
dosyasına kopyalayın.-
clearData
kullanmıyorsanızclearData
,clearDatabaseData
,clearFirestoreData
veclearStorageData
işlevlerini atlayın. -
exportData
kullanmıyorsanız,exportData
,exportDatabaseData
,exportFirestoreData
veexportStorageData
işlevlerini atlayın.
-
- İşlevlerinizi dağıtın.
clearData
ve exportData
için tetikleyicileri uygulayın
Her işlev farklı bir tetikleyici gerektirir:
-
clearData
: Bir kullanıcı, Kimlik Doğrulama yoluyla hesabını sildiğinde tetiklenir. -
exportData
: bir HTTP isteği tarafından tetiklenir.
Bir clearData
tetikleyicisi uygulayın
Bir clearData
olayını tetiklemek için Kimlik Doğrulama'dan bir yöntem kullanmanız gerekir. Henüz yapmadıysanız, uygulamanıza Kimlik Doğrulama'yı ekleyin: Apple platformları , Android veya web .
Ardından platformunuz için Kimlik Doğrulama SDK'sının delete
yöntemini çağırmanın bir yolunu ekleyin:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Android
FirebaseAuth.getCurrentUser().delete();
ağ
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();
}
});
Bir exportData
tetikleyicisi uygulama
exportData
tetikleyicisini uygulamak için uygulamanıza, işlevi bir HTTP isteği aracılığıyla çağıran bir düğme veya bağlantı ekleyin. HTTP istekleri yoluyla işlevleri çağırma bölümünde HTTP üzerinden işlevleri çağırma hakkında daha fazla bilgi edinin.
İstek detayları:
- 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'de çağırın
Uygulamanız Firebase Hosting'de barındırılan bir web uygulamasıysa sitenin firebase.json
dosyasındaki rewrite
girişi aracılığıyla clearData
işlevinizi çağırabilirsiniz:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
exportData
verilerini depolama kurallarıyla güvenli hale getirin
Kullanıcılarınızın dışa aktarılan verilerini gizli tutmak için dışa aktaran kullanıcının erişimini kısıtlayan Cloud Storage kuralları ekleyin.
- Firebase konsolunda Depolama'yı ziyaret edin.
- Kurallar sekmesini açın.
- Aşağıdaki kuralı yapıştırın ve 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... } }
Uygulamanıza clearData
veya exportData
ekleyin
Kitaplıktaki clearData
ve exportData
işlevleri, Gerçek Zamanlı Veritabanı, Bulut Depolama ve Bulut Firestore'daki veriler üzerinde çalışan Bulut İşlevleri olarak uygulanır. İşlevleri kendi uygulamanıza eklemek üç adımlı bir işlemdir:
- Kitaplığın
user_privacy.json
dosyasını, uygulamanızın Gerçek Zamanlı Veritabanını, Cloud Firestore'unu ve Cloud Storage şemasını yansıtacak şekilde düzenleyin. -
clearData
dağıtın veexportData
Bulut İşlevleri olarak dağıtın. - Uygulamanızdaki işlevler için tetikleyiciler uygulayın.
-
clearData
verilerini depolama kurallarıyla koruyun.
Kitaplığın user_privacy.json
dosyasını düzenleyin
Başlamak için Firebase kullanıcı gizliliği GitHub deposunu kopyalayın veya indirin.
Bunu yaptığınızda, bir metin düzenleyicide functions/user_privacy.json
dosyasını açın. Json dosyasında, clearData
ve exportData
işlevlerinin uygulamanızın verilerini Realtime Database, Cloud Firestore ve Cloud Storage'da 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 gittikten sonra, kalan hizmetlerin yer tutucu değerlerini uygulamanızın kullandığı gerçek veri yapılarıyla değiştirmeye başlayabilirsiniz.
Kullanıcı verilerine Gerçek Zamanlı Veritabanı yolları ekleme
user_privacy.json
uygulamanızın Gerçek Zamanlı Veritabanı örneği için özelleştirmek amacıyla, "database"
altındaki yer tutucu dizelerin 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 ] }, ...
Uygulamanıza işlevlerden yalnızca birini eklemek istiyorsanız diğer işlevin nesnesini verilerinizle doldurmak yerine silebilirsiniz.
Kullanıcı verilerini içeren Cloud Firestore nesneleri ekleme
user_privacy.json
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 ] }, ...
Uygulamanıza işlevlerden yalnızca birini eklemek istiyorsanız diğer işlevin nesnesini verilerinizle doldurmak yerine silebilirsiniz.
Cloud Storage paketini ve dosya adını kullanıcı verileriyle birlikte ekleyin
user_privacy.json
dosyasını uygulamanızın Cloud Storage örneği için özelleştirmek için "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"] ] }, ...
Uygulamanıza işlevlerden yalnızca birini eklemek istiyorsanız diğer işlevin nesnesini verilerinizle doldurmak yerine silebilirsiniz.
clearData
ve exportData
Bulut İşlevleri olarak dağıtın
Henüz Bulut İşlevlerine aşina değilseniz Bulut İşlevleri Başlarken kılavuzunda bunların nasıl kullanılacağını okuyun.
Cloud Functions'ı kullanmaya alıştıktan sonra clearData
ve exportData
işlevlerini projenize ekleyin:
- Özelleştirilmiş
user_data.json
dosyanızıfunctions
dizininize kopyalayın. - Kodu, kullanıcı gizliliği kitaplığının
index.js
dosyasından projenizinindex.js
dosyasına kopyalayın.-
clearData
kullanmıyorsanızclearData
,clearDatabaseData
,clearFirestoreData
veclearStorageData
işlevlerini atlayın. -
exportData
kullanmıyorsanız,exportData
,exportDatabaseData
,exportFirestoreData
veexportStorageData
işlevlerini atlayın.
-
- İşlevlerinizi dağıtın.
clearData
ve exportData
için tetikleyicileri uygulayın
Her işlev farklı bir tetikleyici gerektirir:
-
clearData
: Bir kullanıcı, Kimlik Doğrulama yoluyla hesabını sildiğinde tetiklenir. -
exportData
: bir HTTP isteği tarafından tetiklenir.
Bir clearData
tetikleyicisi uygulayın
Bir clearData
olayını tetiklemek için Kimlik Doğrulama'dan bir yöntem kullanmanız gerekir. Henüz yapmadıysanız, uygulamanıza Kimlik Doğrulama'yı ekleyin: Apple platformları , Android veya web .
Ardından platformunuz için Kimlik Doğrulama SDK'sının delete
yöntemini çağırmanın bir yolunu ekleyin:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Android
FirebaseAuth.getCurrentUser().delete();
ağ
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();
}
});
Bir exportData
tetikleyicisi uygulama
exportData
tetikleyicisini uygulamak için uygulamanıza, işlevi bir HTTP isteği aracılığıyla çağıran bir düğme veya bağlantı ekleyin. HTTP istekleri yoluyla işlevleri çağırma bölümünde HTTP üzerinden işlevleri çağırma hakkında daha fazla bilgi edinin.
İstek detayları:
- 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'de çağırın
Uygulamanız Firebase Hosting'de barındırılan bir web uygulamasıysa sitenin firebase.json
dosyasındaki rewrite
girişi aracılığıyla clearData
işlevinizi çağırabilirsiniz:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
exportData
verilerini depolama kurallarıyla güvenli hale getirin
Kullanıcılarınızın dışa aktarılan verilerini gizli tutmak için dışa aktaran kullanıcının erişimini kısıtlayan Cloud Storage kuralları ekleyin.
- Firebase konsolunda Depolama'yı ziyaret edin.
- Kurallar sekmesini açın.
- Aşağıdaki kuralı yapıştırın ve 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... } }