لمساعدتك في مساعدة المستخدمين على التحكم في بياناتهم، أنشأ فريق 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. تتم إضافة الوظائف في تطبيقك الخاص عبر عملية مكونة من ثلاث خطوات:
- قم بتحرير ملف
user_privacy.json
الخاص بالمكتبة ليعكس مخطط قاعدة بيانات Realtime لتطبيقك وCloud Firestore وCloud Storage. - انشر
clearData
وexportData
كوظائف سحابية. - قم بتنفيذ المشغلات للوظائف الموجودة في تطبيقك.
- تأمين بيانات
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
إلى مشروعك:
- انسخ
user_data.json
المخصص إلى دليلfunctions
الخاص بك. - انسخ الكود من ملف
index.js
الخاص بمكتبة خصوصية المستخدم إلى ملفindex.js
الخاص بمشروعك.- إذا كنت لا تستخدم
clearData
، فاحذف وظائفclearData
clearDatabaseData
وclearFirestoreData
وclearStorageData
. - إذا كنت لا تستخدم
exportData
، فاحذف الدالاتexportData
exportDatabaseData
وexportFirestoreData
وexportStorageData
.
- إذا كنت لا تستخدم
- نشر الوظائف الخاصة بك.
تنفيذ مشغلات لـ 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
مع قواعد التخزين
للحفاظ على خصوصية بيانات المستخدمين التي تم تصديرها، أضف قواعد التخزين السحابي التي تقيد الوصول إلى المستخدم المُصدِّر.
- تفضل بزيارة التخزين في وحدة تحكم Firebase .
- افتح علامة التبويب "القواعد" .
- الصق القاعدة التالية ثم اضغط على نشر :
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. تتم إضافة الوظائف في تطبيقك الخاص عبر عملية مكونة من ثلاث خطوات:
- قم بتحرير ملف
user_privacy.json
الخاص بالمكتبة ليعكس مخطط قاعدة بيانات Realtime لتطبيقك وCloud Firestore وCloud Storage. - انشر
clearData
وexportData
كوظائف سحابية. - قم بتنفيذ المشغلات للوظائف الموجودة في تطبيقك.
- تأمين بيانات
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
إلى مشروعك:
- انسخ
user_data.json
المخصص إلى دليلfunctions
الخاص بك. - انسخ الكود من ملف
index.js
الخاص بمكتبة خصوصية المستخدم إلى ملفindex.js
الخاص بمشروعك.- إذا كنت لا تستخدم
clearData
، فاحذف وظائفclearData
clearDatabaseData
وclearFirestoreData
وclearStorageData
. - إذا كنت لا تستخدم
exportData
، فاحذف الدالاتexportData
exportDatabaseData
وexportFirestoreData
وexportStorageData
.
- إذا كنت لا تستخدم
- نشر الوظائف الخاصة بك.
تنفيذ مشغلات لـ 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
مع قواعد التخزين
للحفاظ على خصوصية بيانات المستخدمين التي تم تصديرها، أضف قواعد التخزين السحابي التي تقيد الوصول إلى المستخدم المُصدِّر.
- تفضل بزيارة التخزين في وحدة تحكم Firebase .
- افتح علامة التبويب "القواعد" .
- الصق القاعدة التالية ثم اضغط على نشر :
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... } }