داده های کاربر نهایی را پاک و صادر کنید

برای کمک به کاربران خود در کنترل داده های خود، تیم Firebase کتابخانه ای ایجاد کرد که دو فرآیند معمول داده کاربر را ساده می کند:

  • clearData : داده‌های کاربر را از سرویس‌های خاص Firebase (در حال حاضر پایگاه داده بیدرنگ، Firestore و Storage) هنگامی که حساب خود را از طریق Firebase Authentication حذف می‌کند، حذف می‌کند.

  • exportData : یک کپی از داده های کاربر را از سرویس های Firebase در یک رشته JSON ذخیره می کند و آن را در فضای ذخیره سازی ابری آپلود می کند تا آنها بتوانند به راحتی آن را برای خود دانلود کنند.

به خواندن ادامه دهید تا بدانید چگونه می‌توانید عملکردها را به برنامه خود اضافه کنید، یا مستقیماً به کد موجود در مخزن حریم خصوصی کاربر Firebase GitHub بروید.

clearData یا exportData به برنامه خود اضافه کنید

توابع clearData و exportData در کتابخانه به‌عنوان توابع ابری پیاده‌سازی می‌شوند که بر روی داده‌ها در پایگاه داده بیدرنگ، ذخیره‌سازی ابری و Cloud Firestore عمل می‌کنند. افزودن توابع در برنامه شخصی شما یک فرآیند سه مرحله ای است:

  1. فایل user_privacy.json کتابخانه را ویرایش کنید تا پایگاه داده بیدرنگ، Cloud Firestore و طرح فضای ذخیره سازی ابری برنامه شما را منعکس کند.
  2. نصب clearData و exportData به عنوان توابع ابری.
  3. تریگرها را برای عملکردهای برنامه خود پیاده کنید.
  4. داده های clearData را با قوانین ذخیره سازی ایمن کنید.

فایل user_privacy.json کتابخانه را ویرایش کنید

برای شروع، مخزن حریم خصوصی کاربر Firebase GitHub را شبیه سازی یا دانلود کنید.

وقتی این کار را انجام دادید، functions/user_privacy.json در یک ویرایشگر متن باز کنید. فایل json دارای یک سری مسیرهای قابل تنظیم است که توابع clearData و exportData از آنها برای یافتن داده های برنامه شما در پایگاه داده بیدرنگ، Cloud Firestore و Cloud Storage استفاده می کنند. اگر برنامه شما فقط از یک یا دو مورد از این سرویس ها استفاده می کند، با حذف اشیاء JSON مرتبط با سرویس های استفاده نشده شروع کنید.

با از بین رفتن اشیاء، می‌توانید مقادیر مکان‌نمای باقی‌مانده سرویس‌ها را با ساختارهای داده واقعی که برنامه‌تان استفاده می‌کند جایگزین کنید.

مسیرهای پایگاه داده بیدرنگ را به داده های کاربر اضافه کنید

برای سفارشی کردن user_privacy.json برای نمونه پایگاه داده بیدرنگ برنامه خود، لیست رشته های مکان نگهدار را در زیر "database" با مسیرهای واقعی به داده های کاربر جایگزین کنید:

...
  "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
    ]
  },
...

اگر فقط می خواهید یکی از عملکردها را به برنامه خود اضافه کنید، می توانید به جای پر کردن آن با داده های خود، شی تابع دیگر را حذف کنید.

اشیاء Cloud Firestore حاوی داده های کاربر را اضافه کنید

برای سفارشی‌سازی user_privacy.json برای نمونه Cloud Firestore برنامه‌تان، فهرست اشیاء مکان‌نما را در زیر "firestore" با اشیاء Cloud Firestore واقعی حاوی داده‌های کاربر جایگزین کنید:

...
  "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
    ]
  },
...

اگر فقط می خواهید یکی از عملکردها را به برنامه خود اضافه کنید، می توانید به جای پر کردن آن با داده های خود، شی تابع دیگر را حذف کنید.

سطل Cloud Storage و نام فایل را با داده های کاربر اضافه کنید

برای سفارشی کردن user_privacy.json برای نمونه Cloud Storage برنامه‌تان، سطل ذخیره‌سازی مکان‌نما و نام فایل را در زیر "storage" با مقادیر واقعی جایگزین کنید:

...
  "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"]
    ]
  },
...

اگر فقط می خواهید یکی از عملکردها را به برنامه خود اضافه کنید، می توانید به جای پر کردن آن با داده های خود، شی تابع دیگر را حذف کنید.

نصب clearData و exportData به عنوان توابع ابری

اگر هنوز با توابع ابری آشنا نیستید، نحوه استفاده از آنها را در راهنمای شروع به کار توابع ابری بخوانید.

هنگامی که با توابع Cloud راحت شدید، توابع clearData و exportData را به پروژه خود اضافه کنید:

  1. user_data.json سفارشی شده خود را در فهرست functions خود کپی کنید.
  2. کد را از index.js کتابخانه حریم خصوصی کاربر به index.js پروژه خود کپی کنید.
    • اگر clearData استفاده نمی کنید، توابع clearData ، clearDatabaseData ، clearFirestoreData و clearStorageData را حذف کنید.
    • اگر exportData استفاده نمی کنید، توابع exportData ، exportDatabaseData ، exportFirestoreData و exportStorageData را حذف کنید.
  3. توابع خود را مستقر کنید.

اجرای محرک ها برای clearData و exportData

هر تابع به یک ماشه متفاوت نیاز دارد:

  • clearData : زمانی فعال می شود که کاربر حساب خود را از طریق احراز هویت حذف کند.
  • exportData : توسط یک درخواست HTTP راه اندازی می شود.

یک تریگر clearData پیاده سازی کنید

برای راه اندازی یک رویداد clearData ، باید از روشی از Authentication استفاده کنید. اگر هنوز این کار را انجام نداده‌اید، احراز هویت را به برنامه خود اضافه کنید: پلتفرم‌های Apple ، Android یا وب .

سپس، راهی برای فراخوانی روش delete Authentication SDK برای پلتفرم خود اضافه کنید:

iOS+

FirebaseAuth.User.delete { error in
  if let error = error {
    print("Error deleting user: \(error)")
  }
}

اندروید

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();
  }
});

یک تریگر exportData را پیاده سازی کنید

برای پیاده‌سازی یک راه‌انداز exportData ، دکمه یا پیوندی را به برنامه خود اضافه کنید که عملکرد را از طریق یک درخواست HTTP فراخوانی می‌کند. درباره فراخوانی توابع از طریق HTTP در توابع تماس از طریق درخواست های HTTP بیشتر بخوانید.

جزئیات درخواست:

  • نوع: POST
  • URL: https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
  • متن: <var>CURRENT_USER'S_UID</var>

تابع را مستقیماً در میزبانی Firebase فراخوانی کنید

اگر برنامه شما یک برنامه وب است که در میزبانی Firebase میزبانی می شود، می توانید تابع clearData خود را از طریق یک ورودی rewrite در فایل firebase.json سایت فراخوانی کنید:

  "hosting": {
    "rewrites": [
       {"source": "/exportData", "function": "exportData"}
    ]
  }

با قوانین ذخیره سازی، داده های exportData را ایمن کنید

برای خصوصی نگه داشتن داده‌های صادر شده کاربران، قوانین فضای ذخیره‌سازی ابری را اضافه کنید که دسترسی کاربر صادرکننده را محدود می‌کند.

  1. از فضای ذخیره سازی در کنسول Firebase دیدن کنید.
  2. تب Rules را باز کنید.
  3. قانون زیر را جای‌گذاری کنید، سپس روی انتشار کلیک کنید:
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...
  }
}