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

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

  • clearData: يحذف هذا الإجراء بيانات المستخدم من خدمات محدّدة في Firebase (وهي حاليًا "قاعدة بيانات الوقت الفعلي" وFirestore و"التخزين") عند حذف حسابه من خلال مصادقة Firebase.

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

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

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

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

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

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

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

عند الانتهاء من ذلك، افتح functions/user_privacy.json في محرِّر نصوص. يتضمّن ملف json سلسلة من المسارات القابلة للتخصيص التي تستخدمها الدالتان clearData وexportData للعثور على بيانات تطبيقك في Realtime Database و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

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

بعد أن تشعر بالارتياح تجاه استخدام دوال 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، يجب استخدام طريقة من المصادقة. أضِف "المصادقة" إلى تطبيقك إذا لم يسبق لك إجراء ذلك: أنظمة Apple الأساسية أو Android أو الويب.

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

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

إذا كان تطبيقك هو تطبيق ويب مستضاف على استضافة Firebase، يمكنك استدعاء وظيفة 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...
  }
}