استخدام الإضافة "حذف بيانات المستخدمين"

تتيح لك إضافة "حذف بيانات المستخدمين" (delete-user-data) حذف بيانات المستخدم عند حذفه من مشروعك على Firebase. يمكنك ضبط هذه الإضافة لحذف بيانات المستخدمين من أيّ من الخدمات التالية أو جميعها: Cloud Firestore أو Realtime Database أو Cloud Storage. يرتبط كل عامل تشغيل للإضافة لحذف البيانات بمفتاح UserId للمستخدم.

هذه الإضافة مفيدة لاحترام خصوصية المستخدم واستيفاء متطلبات الامتثال. ومع ذلك، لا يضمن استخدام هذه الإضافة الامتثال للوائح الحكومية وتلك المتعلّقة بالمجال.

المتطلبات الأساسية

تثبيت الإضافة

لتثبيت الإضافة، اتّبع الخطوات الواردة في صفحة تثبيت إضافة Firebase. باختصار، يمكنك تنفيذ أحد الإجراءات التالية:

أثناء تثبيت الإضافة، سيُطلب منك تحديد عدد من مَعلمات الضبط:

  • موقع Cloud Functions:

    اختَر الموقع الجغرافي الذي تريد نشر الدوالّ التي تم إنشاؤها لهذه الإضافة فيه. وعادةً ما يكون الموقع الجغرافي قريبًا من قاعدة بياناتك. للحصول على مساعدة في اختيار موقع جغرافي، يُرجى الرجوع إلى دليل اختيار الموقع الجغرافي.

  • مسارات Cloud Firestore:

    ما هي المسارات في مثيل Cloud Firestore التي تحتوي على بيانات المستخدمين؟ اترك الحقل فارغًا إذا كنت لا تستخدم Cloud Firestore. أدخِل المسارات الكاملة مفصولة بفواصل. يمكنك تمثيل معرّف المستخدم المحذوف باستخدام {UID}. على سبيل المثال، إذا كانت لديك المجموعة users والمجموعة admins، وكانت كل مجموعة تحتوي على مستندات تتضمّن رقم تعريف المستخدم كرقم تعريف للمستند، يمكنك إدخال users/{UID},admins/{UID}.

  • وضع الحذف في Cloud Firestore:

    (ينطبق هذا فقط عند استخدام مَعلمة Cloud Firestore paths.) كيف تريد حذف مستندات Cloud Firestore؟ لحذف المستندات في المجموعات الفرعية أيضًا، اضبط هذه المَعلمة على recursive.

  • مثيل قاعدة البيانات في الوقت الفعلي:

    من أيّ نسخة من "قاعدة بيانات في الوقت الفعلي" تريد حذف بيانات المستخدمين؟

  • الموقع الجغرافي لـ "قاعدة بيانات الوقت الفعلي":

    (ينطبق هذا فقط إذا أدخلت مَعلمة Realtime Database instance.) من أي موقع قاعدة بيانات الوقت الفعلي تريد حذف بيانات المستخدم؟

  • مسارات قاعدة البيانات في الوقت الفعلي:

    ما هي المسارات في مثيل "قاعدة بيانات الوقت الفعلي" التي تحتوي على بيانات المستخدمين؟ اتركه فارغًا إذا كنت لا تستخدم قاعدة بيانات الوقت الفعلي. أدخِل المسارات الكاملة مفصولة بفواصل. يمكنك تمثيل معرّف المستخدم المحذوف باستخدام {UID}. على سبيل المثال: users/{UID},admins/{UID}.

  • مسارات Cloud Storage:

    أين تخزِّن بيانات المستخدمين في Google Cloud Storage؟ اترك هذا الحقل فارغًا إذا كنت لا تستخدم "مساحة التخزين في السحابة الإلكترونية". أدخِل المسارات الكاملة إلى الملفات أو الأدلة في حِزم التخزين، مفصولة بفواصل. استخدِم {UID} لتمثيل معرّف المستخدم الذي تم حذفه، واستخدِم {DEFAULT} لتمثيل حزمة التخزين التلقائية.

    في ما يلي سلسلة من الأمثلة:

    • لحذف جميع الملفات في حزمة التخزين التلقائية باستخدام مخطّط تسمية الملفات {UID}-pic.png، أدخِل {DEFAULT}/{UID}-pic.png.
    • لحذف جميع الملفات أيضًا في حزمة أخرى باسم my-app-logs باستخدام مخطّط تسمية الملفات {UID}-logs.txt، أدخِل {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt.
    • لحذف أيضًا دليل يحمل رقم تعريف مستخدم وجميع ملفاته (مثل media/{UID})، أدخِل {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.

اكتشاف البيانات المُراد حذفها

هناك بعض الآليات التي تستخدمها هذه الإضافة لاكتشاف البيانات المراد حذفها. يجب ضبط هذه الآليات بشكل صريح لكي تتمكّن الإضافة من حذف البيانات. ولن تحذف الإضافة سوى البيانات التي تم ضبطها صراحةً لحذفها استنادًا إلى الآليات المقدَّمة.

يجب الانتباه إلى الاختلافات السلوكية التالية بين كل خدمة:

  • ‫Cloud Firestore: السلوك التلقائي هو حذف مستند بشكل سطحي (لن يتم حذف المجموعات الفرعية). لحذف جميع المجموعات الفرعية لمستند بشكل تسلسلي، اضبط خيار "وضع الحذف في Cloud Firestore" على "تسلسلي".
  • قاعدة بيانات الوقت الفعلي: سيتم حذف جميع البيانات في العقدة المحدّدة.
  • التخزين: في حال تحديد مسار دليل، سيتم حذف جميع الملفات والأدلة الفرعية.

حسب المسار

عند ضبط مسارات Cloud Firestore و"قاعدة بيانات الوقت الفعلي" و"تخزين السحابة الإلكترونية"، من الممكن تحديد متغيّر UID في المسارات التي سيتم استبدالها بمعرّف مستخدم تمّت مصادقة هويته. عند حذف مستخدم، ستحذف الإضافة جميع البيانات التي تمّ ربطها بمعرّف المستخدم الفريد هذا في المسارات المحدّدة، على سبيل المثال:

  • مسارات Cloud Firestore: users/{UID},admins/{UID}
  • مسارات قاعدة البيانات في الوقت الفعلي: likes/{UID}
  • مسارات Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

الاكتشاف التلقائي (Cloud Firestore)

لتفعيل إضافة الاكتشاف التلقائي لمستندات Firestore المطلوب حذفها، اضبط مَعلمة الضبط "تفعيل الاكتشاف التلقائي" على "نعم".

تعمل ميزة الاكتشاف التلقائي عن طريق اجتياز قاعدة البيانات تلقائيًا للعثور على المجموعات والمستندات التي يجب حذفها وفقًا للإعدادات. تحدد الإضافة هذه المجموعات والمستندات باستخدام المنهجية التالية:

  1. أولاً، تعثر الإضافة على جميع المجموعات الجذر في قاعدة البيانات. إذا كان رقم تعريف المجموعة يتطابق مع رقم تعريف المستخدم الفريد، يتم حذف المجموعة بأكملها (يكون الحذف إما متكرّرًا أو سطحيًا، استنادًا إلى إعدادات الإضافات "لوضع الحذف في Cloud Firestore").
  2. ثانيًا، في حال عدم تطابق معرّف المجموعة، ستحاول الإضافة تحديد مستند وحذفه إذا كان معرّف المستند متطابقًا مع المعرّف الفريد للمستخدم.
  3. أخيرًا، بالنسبة إلى كل مستند: أ. إذا كان عمق البحث الحالي (راجِع المعلومات أدناه) أقل من أو يساوي عمق البحث الذي تم ضبطه، ستتم تكرار العملية لجميع المجموعات الفرعية للمستند الحالي. ب. في حال ضبط حقول البحث، ستتحقّق الإضافة مما إذا كانت الحقول المقدّمة تتطابق مع المعرّف الفريد للمستخدم. في حال العثور على مطابقة، سيتم حذف المستند.

متوسط عدد الصفحات المشاهَدة بعد البحث

تقدّم الإضافة قيمة قابلة للضبط لعمق البحث (القيمة التلقائية هي 3). ولن يتم تنفيذ التنقّل إلا إذا كان عمق البحث الحالي أقل من أو يساوي عمق البحث الذي تم ضبطه. ويعتمد عمق البحث الحالي على عمق المجموعة الحالية أو المجموعة الرئيسية للمستندات، على سبيل المثال

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

لن تؤدي هذه الإضافة إلى حذف أرقام تعريف المستخدمين المخزّنة في الصفائف أو الخرائط تلقائيًا، ولن تبحث عن البيانات التي يتمّ ترتيبها حسب رقم تعريف المستخدِم المخزّن في مجموعات فرعية متداخلة بشكلٍ عميق بعد الحدّ الأقصى المحدّد أعلاه.