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

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

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

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

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

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

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

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

قم بتحرير ملف user_privacy.json الخاص بالمكتبة

للبدء، قم باستنساخ أو تنزيل GitHub repo لخصوصية مستخدم 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 لمثيل التخزين السحابي لتطبيقك، استبدل مجموعة تخزين العنصر النائب واسم الملف ضمن "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 كوظائف سحابية

إذا لم تكن على دراية بوظائف السحابة حتى الآن، فاقرأ كيفية استخدامها في دليل البدء بوظائف السحابة .

بمجرد أن تعتاد على استخدام وظائف السحابة، قم بإضافة وظائف 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 الخاصة بـ Authentication SDK للنظام الأساسي الخاص بك:

دائرة الرقابة الداخلية +

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 Hosting

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

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

تأمين بيانات exportData مع قواعد التخزين

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

  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...
  }
}

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

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

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

قم بتحرير ملف user_privacy.json الخاص بالمكتبة

للبدء، قم باستنساخ أو تنزيل GitHub repo لخصوصية مستخدم 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 لمثيل التخزين السحابي لتطبيقك، استبدل مجموعة تخزين العنصر النائب واسم الملف ضمن "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 كوظائف سحابية

إذا لم تكن على دراية بوظائف السحابة حتى الآن، فاقرأ كيفية استخدامها في دليل البدء بوظائف السحابة .

بمجرد أن تعتاد على استخدام وظائف السحابة، قم بإضافة وظائف 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 الخاصة بـ Authentication SDK للنظام الأساسي الخاص بك:

دائرة الرقابة الداخلية +

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 Hosting

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

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

تأمين بيانات exportData مع قواعد التخزين

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

  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...
  }
}