محو بيانات المستخدمين النهائيين وتصديرها

لمساعدتك في مساعدة المستخدمين على التحكم في بياناتهم، أنشأ فريق Firebase مكتبة تعمل على تبسيط عمليتين شائعتين لبيانات المستخدمين:

  • clearData: يحذف بيانات المستخدم من خدمات محددة في Firebase (حاليًا) قاعدة بيانات الوقت الفعلي، وFirestore، والتخزين) عند حذف حساباتهم من خلال Firebase Authentication.

  • exportData: يحفظ هذا الخيار نسخة من بيانات المستخدم من خدمات Firebase في سلسلة JSON ويحمّلها إلى Cloud Storage ليتمكّن من تنزيلها بسهولة بنفسه.

استمر في القراءة لمعرفة كيفية إضافة الدوال إلى تطبيقك، أو انتقل مباشرةً إلى الرمز الموجود في مستودع GitHub حول خصوصية المستخدم في Firebase

إضافة clearData أو exportData إلى تطبيقك

يتم تنفيذ الدالتين clearData وexportData في المكتبة على أنّه Cloud Functions اللذَين تعملان على البيانات في Realtime Database وCloud Storage وCloud Firestore. تتمثل إضافة الدوال في تطبيقك الخاص في عملية من ثلاث خطوات:

  1. عدِّل ملف user_privacy.json في المكتبة ليعكس المخططات Realtime Database وCloud Firestore وCloud Storage في تطبيقك.
  2. نشر clearData وexportData باسم Cloud Functions.
  3. تنفيذ مشغلات للوظائف في تطبيقك.
  4. يمكنك تأمين بيانات "clearData" باستخدام قواعد مساحة التخزين.

تعديل ملف user_privacy.json للمكتبة

للبدء، عليك إنشاء نسخة طبق الأصل من مستودع GitHub لخصوصية المستخدمين في Firebase أو تنزيله.

عند الانتهاء من ذلك، افتح functions/user_privacy.json في محرِّر نصوص. يتضمّن ملف json سلسلة من المسارات القابلة للتخصيص التي تستخدمها الدالتان clearData وexportData للعثور على بيانات تطبيقك في Realtime Database وCloud Firestore وCloud Storage. إذا كان تطبيقك يستخدم خدمة واحدة أو اثنتين فقط من هذه الخدمات، ابدأ بحذف عناصر JSON المرتبطة بالخدمات غير المستخدَمة.

وبعد إزالة العناصر، يمكنك البدء في استبدال الخدمات المتبقية. وقيم العنصر النائب مع هياكل البيانات الفعلية التي يستخدمها تطبيقك.

إضافة Realtime Database مسار إلى بيانات المستخدمين

لتخصيص user_privacy.json لمثيل Realtime Database في تطبيقك، استبدِل قائمة سلاسل العناصر النائبة ضمن "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 Functions

إذا لم تكن معتادًا على استخدام "Cloud Functions" حتى الآن، يمكنك الاطّلاع على كيفية استخدامها في دليل البدء في Cloud Functions.

بعد أن تشعر بالارتياح تجاه Cloud Functions، يمكنك إضافة الدالتين 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: يتم تشغيله عندما يحذف أحد المستخدمين حسابه من خلال Authentication.
  • exportData: يتم تشغيلها بواسطة طلب HTTP.

تنفيذ مشغِل clearData

لتشغيل حدث clearData، يجب استخدام طريقة من Authentication. إذا كنت لم تنفِّذ ذلك بعد، أضِف Authentication إلى تطبيقك: أنظمة Apple الأساسية أو Android أو الويب.

بعد ذلك، أضِف طريقة لاستدعاء طريقة delete الخاصة بحزمة تطوير البرامج (SDK) Authentication من أجل منصتك:

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

تنفيذ عامل تشغيل exportData

لتنفيذ عامل تشغيل exportData، أضِف زرًا أو رابطًا إلى تطبيقك لاستدعاء الدالة عن طريق طلب HTTP. مزيد من المعلومات عن دوال الاستدعاء عبر HTTP في وظائف الاتصال عبر طلبات HTTP.

تفاصيل الطلب:

  • النوع: POST
  • عنوان URL: https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
  • النص الأساسي: <var>CURRENT_USER'S_UID</var>

استدعاء الدالة مباشرةً في Firebase Hosting

إذا كان تطبيقك هو تطبيق ويب تتم استضافته على Firebase Hosting، يمكنك استدعاء clearData من خلال الإدخال rewrite في ملف firebase.json الخاص بالموقع الإلكتروني:

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

تأمين بيانات "exportData" باستخدام قواعد مساحة التخزين

للحفاظ على اهتمام البيانات التي تم تصديرها خاصة، يُرجى إضافة Cloud Storage التي تفرض قيودًا على الوصول إلى المستخدِم المصدِّر.

  1. انتقِل إلى مساحة التخزين في وحدة تحكّم Firebase.
  2. افتح علامة التبويب القواعد.
  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...
  }
}