Son kullanıcı verilerini temizleme ve dışa aktarma

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:

  1. Kitaplığın user_privacy.json dosyasını uygulamanızın Realtime Database, Cloud Firestore ve Cloud Storage şemasını yansıtacak şekilde düzenleyin.
  2. clearData ve exportData öğelerini Cloud Functions olarak dağıtın.
  3. Uygulamanızdaki işlevler için tetikleyiciler uygulayın.
  4. 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:

  1. Özelleştirilmiş user_data.json dosyanızı functions dizininize kopyalayın.
  2. Kullanıcı gizliliği kitaplığının index.js kodundan projenizin index.js koduna kopyalayın.
    • clearData kullanmıyorsanız clearData, clearDatabaseData, clearFirestoreData ve clearStorageData işlevlerini kullanmayın.
    • exportData kullanmıyorsanız exportData, exportDatabaseData, exportFirestoreData ve exportStorageData işlevlerini kullanmayın.
  3. İş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.

  1. Firebase konsolunda Depolama Alanı'na gidin.
  2. Kurallar sekmesini açın.
  3. 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...
  }
}