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

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

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

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

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

เพิ่ม clearData หรือ exportData ลงในแอป

ฟังก์ชัน clearData และ exportData ในคลังจะได้รับการนำไปใช้เป็น Cloud Functions ที่ดำเนินการกับข้อมูลใน Realtime Database, Cloud Storage และ Cloud Firestore การเพิ่มฟังก์ชันในแอปของคุณเองมี 3 ขั้นตอนดังนี้

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

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

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

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

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

เพิ่มเส้นทาง Realtime Database ไปยังข้อมูลผู้ใช้

หากต้องการปรับแต่ง 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คู่มือเริ่มต้นใช้งาน

เมื่อคุ้นเคยกับ 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: ทริกเกอร์โดยคำขอ HTTP

ใช้ทริกเกอร์ clearData

หากต้องการทริกเกอร์เหตุการณ์ clearData คุณต้องใช้เมธอดจาก Authentication หากคุณ หากยังไม่ได้ทำ ให้เพิ่ม Authentication ลงในแอปแพลตฟอร์มของ Apple, Android หรือเว็บ

จากนั้นเพิ่มวิธีเรียกใช้เมธอด delete ของ Authentication SDK สำหรับแพลตฟอร์มของคุณ ดังนี้

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 อ่านเพิ่มเติมเกี่ยวกับการเรียกใช้ฟังก์ชัน ผ่าน HTTP ในฟังก์ชันการเรียกผ่านคำขอ HTTP

รายละเอียดคำขอ

  • ประเภท: POST
  • URL: https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
  • เนื้อความ: <var>CURRENT_USER'S_UID</var>

เรียกใช้ฟังก์ชันใน Firebase Hosting โดยตรง

หากแอปของคุณเป็นเว็บแอปที่โฮสต์บน Firebase Hosting คุณสามารถเรียกใช้ 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...
  }
}