आपके उपयोगकर्ताओं को उनका डेटा कंट्रोल करने में मदद करने के लिए, Firebase टीम ने एक लाइब्रेरी बनाई है. इस लाइब्रेरी से, उपयोगकर्ता के डेटा को इस्तेमाल करने की दो सामान्य प्रक्रियाओं को आसान बनाया जा सकता है:
clearData
: खास Firebase सेवाओं से उपयोगकर्ता का डेटा मिटाता है (फ़िलहाल, रीयलटाइम डेटाबेस, Firestore, और स्टोरेज), जब वे अपना खाता मिटाते हैं Firebase Authentication के ज़रिए.exportData
: Firebase सेवाओं से उपयोगकर्ता के डेटा की एक कॉपी को JSON स्ट्रिंग में सेव करता है और उसे Cloud Storage पर अपलोड करता है, ताकि वे उसे अपने लिए आसानी से डाउनलोड कर सकें.
अपने ऐप्लिकेशन में फ़ंक्शन जोड़ने का तरीका जानने के लिए, पढ़ना जारी रखें या सीधे Firebase उपयोगकर्ता की निजता के लिए GitHub रेपो.
अपने ऐप्लिकेशन में clearData
या exportData
जोड़ें
लाइब्रेरी के clearData
और exportData
फ़ंक्शन, Cloud Functions के तौर पर लागू किए गए हैं. ये Realtime Database, Cloud Storage, और Cloud Firestore में मौजूद डेटा पर काम करते हैं. अपने ऐप्लिकेशन में फ़ंक्शन जोड़ने की प्रोसेस, तीन चरणों वाली है:
- अपने ऐप्लिकेशन के Realtime Database, Cloud Firestore, और Cloud Storage स्कीमा को दिखाने के लिए, लाइब्रेरी की
user_privacy.json
फ़ाइल में बदलाव करें. clearData
औरexportData
को Cloud Functions के तौर पर डिप्लॉय करें.- अपने ऐप्लिकेशन में फ़ंक्शन के लिए ट्रिगर लागू करें.
- स्टोरेज के नियमों की मदद से,
clearData
डेटा सुरक्षित करें.
लाइब्रेरी की user_privacy.json
फ़ाइल में बदलाव करें
शुरू करने के लिए, Firebase उपयोगकर्ता की निजता से जुड़ा GitHub रेपो का क्लोन बनाएं या उसे डाउनलोड करें.
ऐसा करने के बाद, functions/user_privacy.json
को टेक्स्ट एडिटर में खोलें. JSON फ़ाइल में, पसंद के मुताबिक बनाए जा सकने वाले पाथ की एक सीरीज़ होती है. इसका इस्तेमाल clearData
और exportData
फ़ंक्शन, Realtime Database, Cloud Firestore, और Cloud Storage में आपके ऐप्लिकेशन का डेटा ढूंढने के लिए करते हैं. अगर आपका ऐप्लिकेशन इनमें से एक या दो सेवाओं का ही इस्तेमाल करता है, तो इस्तेमाल नहीं की जा रही सेवाओं से जुड़े JSON ऑब्जेक्ट मिटाकर शुरुआत करें.
ऑब्जेक्ट के हट जाने के बाद, बची हुई सेवाओं को बदलना शुरू किया जा सकता है' आपके ऐप्लिकेशन में इस्तेमाल किए जाने वाले असल डेटा स्ट्रक्चर के साथ प्लेसहोल्डर की वैल्यू.
उपयोगकर्ता के डेटा में Realtime Database पाथ जोड़ें
अपने ऐप्लिकेशन के Realtime Database इंस्टेंस के हिसाब से 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 ऑब्जेक्ट जोड़ें
अपने ऐप्लिकेशन के Cloud Firestore इंस्टेंस के लिए user_privacy.json
को पसंद के मुताबिक बनाने के लिए, "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 बकेट और फ़ाइल का नाम जोड़ें
अपने ऐप्लिकेशन के 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
को Cloud Functions के तौर पर डिप्लॉय करें
अगर आप Cloud Functions के बारे में अभी तक नहीं जानते हैं, तो उन्हें इस्तेमाल करने का तरीका Cloud Functions शुरुआती निर्देश में पढ़ें.
जब आपको Cloud Functions ठीक लगे, तब अपने प्रोजेक्ट में clearData
और exportData
फ़ंक्शन जोड़ें:
- अपनी पसंद के मुताबिक बनाए गए
user_data.json
को अपनीfunctions
डायरेक्ट्री में कॉपी करें. - उपयोगकर्ता की निजता लाइब्रेरी के
index.js
से कोड को अपने प्रोजेक्ट केindex.js
में कॉपी करें.- अगर
clearData
का इस्तेमाल नहीं किया जा रहा है, तोclearData
,clearDatabaseData
,clearFirestoreData
, औरclearStorageData
फ़ंक्शन को छोड़ दें. - अगर
exportData
का इस्तेमाल नहीं किया जा रहा है, तोexportData
,exportDatabaseData
,exportFirestoreData
, औरexportStorageData
फ़ंक्शन को छोड़ दें.
- अगर
- अपने फ़ंक्शन डिप्लॉय करें.
clearData
और exportData
के लिए ट्रिगर लागू करें
हर फ़ंक्शन के लिए एक अलग ट्रिगर की ज़रूरत होती है:
clearData
: यह तब ट्रिगर होता है, जब कोई उपयोगकर्ता Authentication का इस्तेमाल करके, अपना खाता मिटाता है.exportData
: किसी एचटीटीपी अनुरोध से ट्रिगर होता है.
clearData
ट्रिगर लागू करें
clearData
इवेंट को ट्रिगर करने के लिए, आपको Authentication में से किसी तरीके का इस्तेमाल करना होगा. अगर आपको
अभी तक ऐसा नहीं किया है. इसलिए, अपने ऐप्लिकेशन में Authentication जोड़ें: Apple प्लैटफ़ॉर्म, Android या वेब.
इसके बाद, अपने प्लैटफ़ॉर्म के लिए Authentication SDK टूल के delete
तरीके को शुरू करने का तरीका जोड़ें:
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 अनुरोध के ज़रिए फ़ंक्शन को किया जा सकता है. शुरू करने वाले फ़ंक्शन के बारे में ज़्यादा जानें
एचटीटीपी अनुरोधों के ज़रिए कॉल फ़ंक्शन में एचटीटीपी पर.
अनुरोध की जानकारी:
- ऐसी गड़बड़ियां दिखाएं:
POST
- यूआरएल:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- मुख्य हिस्सा:
<var>CURRENT_USER'S_UID</var>
फ़ंक्शन को सीधे Firebase Hosting में शुरू करें
अगर आपका ऐप्लिकेशन Firebase Hosting पर होस्ट किया गया वेब ऐप्लिकेशन है, तो
साइट की firebase.json
फ़ाइल में rewrite
एंट्री के ज़रिए clearData
फ़ंक्शन:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
स्टोरेज के नियमों की मदद से, exportData
डेटा सुरक्षित करें
अपने उपयोगकर्ताओं को एक्सपोर्ट किया गया डेटा निजी है, Cloud Storage जोड़ें ऐसे नियम जो एक्सपोर्ट करने वाले उपयोगकर्ता के ऐक्सेस पर पाबंदी लगाते हैं.
- 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... } }