ส่วนขยาย Delete User Data ( delete-user-data
) ช่วยให้คุณลบข้อมูลผู้ใช้เมื่อผู้ใช้ถูกลบออกจากโปรเจ็กต์ Firebase ของคุณ คุณสามารถกำหนดค่าส่วนขยายนี้เพื่อลบข้อมูลผู้ใช้ออกจากรายการใดรายการหนึ่งหรือทั้งหมดต่อไปนี้: Cloud Firestore, Realtime Database หรือ Cloud Storage ทริกเกอร์แต่ละรายการของส่วนขยายที่จะลบข้อมูลจะถูกคีย์ให้กับ UserId
ของผู้ใช้
ส่วนขยายนี้มีประโยชน์ในการเคารพความเป็นส่วนตัวของผู้ใช้และปฏิบัติตามข้อกำหนด อย่างไรก็ตาม การใช้ส่วนขยายนี้ไม่รับประกันการปฏิบัติตามกฎระเบียบของรัฐบาลและอุตสาหกรรม
ข้อกำหนดเบื้องต้น
คุณต้องใช้ Firebase Authentication เพื่อจัดการผู้ใช้ของคุณ
ส่วนขยายนี้จะลบข้อมูลจาก Cloud Firestore , Realtime Database และ Cloud Storage เท่านั้น หากคุณจัดเก็บข้อมูลผู้ใช้ไว้ที่อื่น คุณควรลบข้อมูลผู้ใช้ออกจากแหล่งที่มาเหล่านั้นเมื่อคุณลบผู้ใช้
ติดตั้งส่วนขยาย
หากต้องการติดตั้งส่วนขยาย ให้ทำตามขั้นตอนในหน้า ติดตั้งส่วนขยาย Firebase โดยสรุป ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้:
คอนโซล Firebase: คลิกปุ่มต่อไปนี้:
CLI: รันคำสั่งต่อไปนี้:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
ระหว่างการติดตั้งส่วนขยาย คุณจะได้รับแจ้งให้ระบุพารามิเตอร์การกำหนดค่าจำนวนหนึ่ง:
ตำแหน่งฟังก์ชั่นคลาวด์:
เลือกตำแหน่งที่คุณต้องการปรับใช้ฟังก์ชันที่สร้างขึ้นสำหรับส่วนขยายนี้ คุณมักจะต้องการตำแหน่งใกล้กับฐานข้อมูลของคุณ หากต้องการความช่วยเหลือในการเลือกสถานที่ โปรดดู คู่มือการเลือกสถานที่
เส้นทาง Cloud Firestore:
เส้นทางใดในอินสแตนซ์ Cloud Firestore ของคุณที่มีข้อมูลผู้ใช้ เว้นว่างไว้หากคุณไม่ได้ใช้ Cloud Firestore ป้อนเส้นทางแบบเต็มโดยคั่นด้วยเครื่องหมายจุลภาค คุณสามารถแสดง User ID ของผู้ใช้ที่ถูกลบด้วย
{UID}
ตัวอย่างเช่น หากคุณมีคอลเลกชันusers
และadmins
และแต่ละคอลเลกชันมีเอกสารที่มี User ID เป็น ID เอกสาร คุณสามารถป้อนusers/{UID},admins/{UID}
ได้โหมดการลบ Cloud Firestore:
(ใช้ได้เฉพาะเมื่อคุณใช้พารามิเตอร์
Cloud Firestore paths
) คุณต้องการลบเอกสาร Cloud Firestore อย่างไร หากต้องการลบเอกสารในคอลเลกชันย่อยด้วย ให้ตั้งค่าพารามิเตอร์นี้เป็นrecursive
อินสแตนซ์ฐานข้อมูลเรียลไทม์:
คุณต้องการลบข้อมูลผู้ใช้จากอินสแตนซ์ Realtime Database ใด
ตำแหน่งฐานข้อมูลเรียลไทม์:
(ใช้ได้เฉพาะในกรณีที่คุณระบุพารามิเตอร์
Realtime Database instance
) คุณต้องการลบข้อมูลผู้ใช้จากตำแหน่งฐานข้อมูลเรียลไทม์ใดเส้นทางฐานข้อมูลเรียลไทม์:
เส้นทางใดในอินสแตนซ์ Realtime Database ของคุณที่มีข้อมูลผู้ใช้ เว้นว่างไว้หากคุณไม่ได้ใช้ฐานข้อมูลเรียลไทม์ ป้อนเส้นทางแบบเต็มโดยคั่นด้วยเครื่องหมายจุลภาค คุณสามารถแสดง User ID ของผู้ใช้ที่ถูกลบด้วย
{UID}
ตัวอย่างเช่น:users/{UID},admins/{UID}
เส้นทางการจัดเก็บข้อมูลบนคลาวด์:
คุณจัดเก็บข้อมูลผู้ใช้ไว้ที่ใดใน Google Cloud Storage เว้นว่างไว้หากคุณไม่ได้ใช้ Cloud Storage ป้อนเส้นทางแบบเต็มไปยังไฟล์หรือไดเรกทอรีในที่เก็บข้อมูล Storage โดยคั่นด้วยเครื่องหมายจุลภาค ใช้
{UID}
เพื่อแสดง User ID ของผู้ใช้ที่ถูกลบ และใช้{DEFAULT}
เพื่อแสดงที่เก็บข้อมูลเริ่มต้นของคุณนี่คือชุดตัวอย่าง:
- หากต้องการลบไฟล์ทั้งหมดในที่เก็บข้อมูลเริ่มต้นที่มีรูปแบบการตั้งชื่อไฟล์
{UID}-pic.png
ให้ป้อน{DEFAULT}/{UID}-pic.png
- หากต้องการลบไฟล์ทั้งหมดในที่เก็บข้อมูลอื่นที่เรียกว่า
my-app-logs
ที่มีรูปแบบการตั้งชื่อไฟล์{UID}-logs.txt
ให้ป้อน{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - หาก ต้องการ ลบไดเร็กทอรีที่มีป้ายกำกับ ID ผู้ใช้และไฟล์ทั้งหมด (เช่น
media/{UID}
) ให้ป้อน{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
- หากต้องการลบไฟล์ทั้งหมดในที่เก็บข้อมูลเริ่มต้นที่มีรูปแบบการตั้งชื่อไฟล์
การค้นหาข้อมูลเพื่อการลบ
มีกลไกบางอย่างที่ส่วนขยายนี้ใช้ในการค้นหาข้อมูลสำหรับการลบ กลไกเหล่านี้ต้องได้รับการกำหนดค่าอย่างชัดเจนเพื่อให้ส่วนขยายลบข้อมูลได้ ส่วนขยายจะลบเฉพาะข้อมูลที่ได้รับการกำหนดค่าอย่างชัดเจนให้ลบตามกลไกที่มีให้
โปรดระวังความแตกต่างด้านพฤติกรรมระหว่างแต่ละบริการดังต่อไปนี้:
- Cloud Firestore: พฤติกรรมเริ่มต้นคือการลบเอกสารแบบตื้น (คอลเลกชันย่อยจะไม่ถูกลบ) หากต้องการลบคอลเลกชันย่อยทั้งหมดของเอกสารแบบวนซ้ำ ให้ตั้งค่าตัวเลือก "โหมดการลบ Cloud Firestore" เป็น "แบบเรียกซ้ำ"
- ฐานข้อมูลเรียลไทม์: ข้อมูลทั้งหมดที่โหนดที่ระบุจะถูกลบ
- พื้นที่เก็บข้อมูล: หากระบุเส้นทางไดเรกทอรี ไฟล์และไดเรกทอรีย่อยทั้งหมดจะถูกลบ
ตามเส้นทาง
เมื่อกำหนดค่าเส้นทาง Cloud Firestore, ฐานข้อมูลเรียลไทม์ และที่เก็บข้อมูลบนคลาวด์ คุณสามารถกำหนดตัวแปร UID
ในเส้นทางที่จะแทนที่ด้วย UID ของผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์ เมื่อผู้ใช้ถูกลบ ส่วนขยายจะลบข้อมูลทั้งหมดที่คีย์ไว้ใน UID นั้นในเส้นทางที่กำหนด ตัวอย่างเช่น:
- เส้นทาง Cloud Firestore:
users/{UID},admins/{UID}
- เส้นทางฐานข้อมูลเรียลไทม์:
likes/{UID}
- เส้นทาง Cloud Storage:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
การค้นหาอัตโนมัติ (Cloud Firestore)
หากต้องการเปิดใช้งานส่วนขยายเพื่อค้นหาเอกสาร Firestore ที่จะลบโดยอัตโนมัติ ให้ตั้งค่าพารามิเตอร์การกำหนดค่า "เปิดใช้งานการค้นหาอัตโนมัติ" เป็น "ใช่"
การค้นหาอัตโนมัติทำงานโดยการสำรวจฐานข้อมูลโดยอัตโนมัติเพื่อค้นหาคอลเลกชันและเอกสารที่ควรถูกลบตามการกำหนดค่าของคุณ ส่วนขยายระบุคอลเลกชันและเอกสารเหล่านั้นด้วยวิธีการต่อไปนี้:
- ขั้นแรก ส่วนขยายจะค้นหาคอลเลกชันรูททั้งหมดในฐานข้อมูล หาก ID ของคอลเลกชันตรงกับ UID ของผู้ใช้ คอลเลกชันทั้งหมดจะถูกลบ (การลบเป็นแบบเรียกซ้ำหรือแบบตื้น ขึ้นอยู่กับการกำหนดค่าของส่วนขยายสำหรับ "โหมดการลบ Cloud Firestore")
- ประการที่สอง หากรหัสคอลเลกชันไม่ตรงกัน ส่วนขยายจะพยายามระบุและลบเอกสารหากรหัสเอกสารตรงกับ UID ของผู้ใช้
- สุดท้ายนี้ สำหรับแต่ละเอกสาร: หากความลึกในการค้นหาปัจจุบัน (ดูด้านล่าง) น้อยกว่าหรือเท่ากับความลึกในการค้นหาที่กำหนดค่าไว้ กระบวนการจะถูกทำซ้ำสำหรับคอลเลกชันย่อยของเอกสารปัจจุบันทั้งหมด ข. หากมีการกำหนดค่าช่องค้นหา ส่วนขยายจะตรวจสอบว่าช่องที่ให้ตรงกับ UID ของผู้ใช้หรือไม่ หากพบว่าตรงกัน เอกสารจะถูกลบ
ความลึกของการค้นหา
ส่วนขยายเสนอค่าความลึกในการค้นหาที่กำหนดค่าได้ (ค่าเริ่มต้นคือ 3) การข้ามผ่านจะดำเนินการเฉพาะเมื่อความลึกในการค้นหาปัจจุบันน้อยกว่าหรือเท่ากับความลึกในการค้นหาที่กำหนดค่าไว้ ความลึกในการค้นหาปัจจุบันจะขึ้นอยู่กับความลึกของคอลเลกชันปัจจุบันหรือคอลเลกชันหลักของเอกสาร เป็นต้น
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
ส่วนขยายนี้จะไม่ลบ UID ที่จัดเก็บไว้ในอาร์เรย์หรือแผนที่โดยอัตโนมัติ และจะไม่ค้นหาข้อมูลที่คีย์ด้วย ID ผู้ใช้ที่จัดเก็บไว้ในคอลเลกชันย่อยที่ซ้อนกันลึกเกินกว่าความลึกที่ระบุไว้ข้างต้น