Son kullanıcı verilerini temizleyin ve dışa aktarın

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:

  1. 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.
  2. clearData dağıtın ve exportData Bulut İşlevleri olarak dağıtın.
  3. Uygulamanızdaki işlevler için tetikleyiciler uygulayın.
  4. 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:

  1. Özelleştirilmiş user_data.json dosyanızı functions dizininize kopyalayın.
  2. Kodu, kullanıcı gizliliği kitaplığının index.js dosyasından projenizin index.js dosyasına kopyalayın.
    • clearData kullanmıyorsanız clearData , clearDatabaseData , clearFirestoreData ve clearStorageData işlevlerini atlayın.
    • exportData kullanmıyorsanız, exportData , exportDatabaseData , exportFirestoreData ve exportStorageData işlevlerini atlayın.
  3. İş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();

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.

  1. Firebase konsolunda Depolama'yı ziyaret edin.
  2. Kurallar sekmesini açın.
  3. 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:

  1. 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.
  2. clearData dağıtın ve exportData Bulut İşlevleri olarak dağıtın.
  3. Uygulamanızdaki işlevler için tetikleyiciler uygulayın.
  4. 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:

  1. Özelleştirilmiş user_data.json dosyanızı functions dizininize kopyalayın.
  2. Kodu, kullanıcı gizliliği kitaplığının index.js dosyasından projenizin index.js dosyasına kopyalayın.
    • clearData kullanmıyorsanız clearData , clearDatabaseData , clearFirestoreData ve clearStorageData işlevlerini atlayın.
    • exportData kullanmıyorsanız, exportData , exportDatabaseData , exportFirestoreData ve exportStorageData işlevlerini atlayın.
  3. İş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();

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.

  1. Firebase konsolunda Depolama'yı ziyaret edin.
  2. Kurallar sekmesini açın.
  3. 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...
  }
}