असली उपयोगकर्ता का डेटा मिटाना और एक्सपोर्ट करना

आपके उपयोगकर्ताओं को उनका डेटा कंट्रोल करने में मदद करने के लिए, 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 में मौजूद डेटा पर काम करते हैं. अपने ऐप्लिकेशन में फ़ंक्शन जोड़ने की प्रोसेस, तीन चरणों वाली है:

  1. अपने ऐप्लिकेशन के Realtime Database, Cloud Firestore, और Cloud Storage स्कीमा को दिखाने के लिए, लाइब्रेरी की user_privacy.json फ़ाइल में बदलाव करें.
  2. clearData और exportData को Cloud Functions के तौर पर डिप्लॉय करें.
  3. अपने ऐप्लिकेशन में फ़ंक्शन के लिए ट्रिगर लागू करें.
  4. स्टोरेज के नियमों की मदद से, 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 फ़ंक्शन जोड़ें:

  1. अपनी पसंद के मुताबिक बनाए गए user_data.json को अपनी functions डायरेक्ट्री में कॉपी करें.
  2. उपयोगकर्ता की निजता लाइब्रेरी के index.js से कोड को अपने प्रोजेक्ट के index.js में कॉपी करें.
    • अगर clearData का इस्तेमाल नहीं किया जा रहा है, तो clearData, clearDatabaseData, clearFirestoreData, और clearStorageData फ़ंक्शन को छोड़ दें.
    • अगर exportData का इस्तेमाल नहीं किया जा रहा है, तो exportData, exportDatabaseData, exportFirestoreData, और exportStorageData फ़ंक्शन को छोड़ दें.
  3. अपने फ़ंक्शन डिप्लॉय करें.

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 जोड़ें ऐसे नियम जो एक्सपोर्ट करने वाले उपयोगकर्ता के ऐक्सेस पर पाबंदी लगाते हैं.

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