ล้างและส่งออกข้อมูลผู้ใช้ปลายทาง

เพื่อช่วยให้คุณช่วยให้ผู้ใช้ควบคุมข้อมูลของตนได้ ทีม Firebase ได้สร้างไลบรารีที่ทำให้กระบวนการข้อมูลผู้ใช้ทั่วไปสองขั้นตอนง่ายขึ้น:

  • clearData : ลบข้อมูลของผู้ใช้ออกจากบริการ Firebase เฉพาะ (ปัจจุบันคือ Realtime Database, Firestore และ Storage) เมื่อพวกเขาลบบัญชีผ่าน Firebase Authentication

  • exportData : บันทึกสำเนาข้อมูลของผู้ใช้จากบริการ Firebase ไปยังสตริง JSON และอัปโหลดไปยัง Cloud Storage เพื่อให้ผู้ใช้ดาวน์โหลดด้วยตนเองได้อย่างง่ายดาย

อ่านต่อเพื่อดูวิธีเพิ่มฟังก์ชันลงในแอปของคุณ หรือข้ามไปที่โค้ดที่ repo GitHub ความเป็นส่วนตัวของผู้ใช้ Firebase

เพิ่ม clearData หรือ exportData ไปยังแอปของคุณ

ฟังก์ชัน clearData และ exportData ในไลบรารีถูกนำมาใช้เป็นฟังก์ชันคลาวด์ที่ทำงานกับข้อมูลในฐานข้อมูลเรียลไทม์, Cloud Storage และ Cloud Firestore การเพิ่มฟังก์ชันในแอปของคุณเองมีขั้นตอนสามขั้นตอน:

  1. แก้ไขไฟล์ user_privacy.json ของไลบรารีเพื่อให้สอดคล้องกับสคีมา Realtime Database, Cloud Firestore และ Cloud Storage ของแอป
  2. ปรับใช้ clearData และ exportData เป็นฟังก์ชันคลาวด์
  3. ติดตั้งทริกเกอร์สำหรับฟังก์ชันต่างๆ ในแอปของคุณ
  4. รักษาความปลอดภัยข้อมูล clearData ด้วยกฎการจัดเก็บ

แก้ไขไฟล์ user_privacy.json ของไลบรารี

ในการเริ่มต้น ให้โคลนหรือดาวน์โหลด repo GitHub ความเป็นส่วนตัวของผู้ใช้ Firebase

เมื่อคุณดำเนินการเสร็จแล้ว ให้เปิด functions/user_privacy.json ในโปรแกรมแก้ไขข้อความ ไฟล์ json มีชุดเส้นทางที่ปรับแต่งได้ซึ่งฟังก์ชัน clearData และ exportData ใช้เพื่อค้นหาข้อมูลแอปของคุณใน Realtime Database, Cloud Firestore และ Cloud Storage หากแอปของคุณใช้บริการเหล่านั้นเพียงหนึ่งหรือสองบริการ ให้เริ่มด้วยการลบออบเจ็กต์ JSON ที่เชื่อมโยงกับบริการที่ไม่ได้ใช้

เมื่อออบเจ็กต์หายไป คุณสามารถเริ่มแทนที่ค่าตัวแทนของบริการที่เหลือด้วยโครงสร้างข้อมูลจริงที่แอปของคุณใช้

เพิ่มเส้นทางฐานข้อมูลเรียลไทม์ให้กับข้อมูลผู้ใช้

หากต้องการปรับแต่ง user_privacy.json สำหรับอินสแตนซ์ Realtime Database ของแอป ให้แทนที่รายการสตริงตัวยึดตำแหน่งใต้ "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 สำหรับอินสแตนซ์ Cloud Storage ของแอป ให้แทนที่ที่เก็บข้อมูลตัวยึดตำแหน่งและชื่อไฟล์ภายใต้ "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 แล้ว ให้เพิ่มฟังก์ชัน 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 ข้อมูลด้วยกฎการจัดเก็บ

หากต้องการรักษาข้อมูลที่ส่งออกของผู้ใช้ให้เป็นส่วนตัว ให้เพิ่มกฎ 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...
  }
}