เรียนรู้เกี่ยวกับการใช้และการจัดการคีย์ API สำหรับ Firebase

คีย์ API คือสตริงเฉพาะที่ใช้ในการกำหนดเส้นทางคำขอไปยังโปรเจ็กต์ Firebase ของคุณเมื่อโต้ตอบกับ Firebase และบริการของ Google หน้านี้อธิบายข้อมูลพื้นฐานเกี่ยวกับคีย์ API รวมถึงแนวทางปฏิบัติที่ดีที่สุดในการใช้และจัดการคีย์ API ด้วยแอป Firebase

ข้อมูลทั่วไปเกี่ยวกับคีย์ API และ Firebase

คีย์ API สำหรับ Firebase แตกต่างจากคีย์ API ทั่วไป

ซึ่งแตกต่างจากวิธีการใช้คีย์ API โดยทั่วไป คีย์ API สำหรับบริการ Firebase จะ ไม่ ถูกใช้เพื่อควบคุมการเข้าถึงทรัพยากรแบ็กเอนด์ ที่สามารถทำได้ด้วยกฎความปลอดภัยของ Firebase เท่านั้น (เพื่อควบคุมผู้ใช้ที่สามารถเข้าถึงทรัพยากรได้) และ App Check (เพื่อควบคุมว่าแอปใดที่สามารถเข้าถึงทรัพยากรได้)

โดยปกติแล้ว คุณจะต้องปกป้องคีย์ API อย่างระมัดระวัง (เช่น โดยการใช้บริการห้องนิรภัยหรือตั้งค่าคีย์เป็นตัวแปรสภาพแวดล้อม) อย่างไรก็ตาม คีย์ API สำหรับบริการ Firebase สามารถรวมไว้ในโค้ดหรือไฟล์การกำหนดค่าที่เช็คอินได้

แม้ว่าคีย์ API สำหรับบริการ Firebase จะรวมไว้ในโค้ดได้อย่างปลอดภัย แต่ก็มีบาง กรณี ที่คุณควรบังคับใช้ขีดจำกัดสำหรับคีย์ API ของคุณ ตัวอย่างเช่น หากคุณใช้ Firebase ML, การตรวจสอบสิทธิ์ Firebase ด้วยวิธีลงชื่อเข้าใช้อีเมล/รหัสผ่าน หรือ Google Cloud API ที่เรียกเก็บเงินได้ เรียนรู้เพิ่มเติมเกี่ยวกับกรณีเหล่านี้ในภายหลังในหน้านี้

การสร้างคีย์ API

โปรเจ็กต์ Firebase สามารถมีคีย์ API ได้หลายคีย์ แต่คีย์ API แต่ละคีย์สามารถเชื่อมโยงกับโปรเจ็กต์ Firebase เดียวเท่านั้น

คีย์ API ที่สร้างโดยอัตโนมัติโดย Firebase สำหรับแอป Firebase ของคุณ

Firebase จะสร้างคีย์ API สำหรับโปรเจ็กต์ของคุณโดยอัตโนมัติเมื่อคุณดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

  • สร้างโปรเจ็กต์ Firebase > สร้าง Browser key อัตโนมัติ
  • สร้างแอป Firebase Apple > สร้าง iOS key โดยอัตโนมัติ
  • สร้างแอป Firebase Android > สร้าง Android key โดยอัตโนมัติ

คุณยังสามารถสร้างคีย์ API ของคุณเองใน คอนโซล Google Cloud ได้ เช่น สำหรับการพัฒนาหรือการแก้ไขข้อบกพร่อง เรียนรู้เพิ่มเติมเกี่ยวกับเวลาที่อาจมีการแนะนำในภายหลังในหน้านี้

ค้นหาคีย์ API ของคุณ

คุณสามารถดูและจัดการคีย์ API ทั้งหมด ของโปรเจ็กต์ได้ในแผง API และบริการ > ข้อมูลรับรอง ในคอนโซล Google Cloud

คุณยังค้นหา คีย์ API ที่จะจับคู่กับแอป Firebase โดยอัตโนมัติได้ จากที่ต่อไปนี้ ตามค่าเริ่มต้น แอป Firebase ทั้งหมดของโปรเจ็กต์ของคุณ สำหรับแพลตฟอร์มเดียวกัน (Apple กับ Android และ Web) จะใช้คีย์ API เดียวกัน

  • Firebase Apple Apps — ค้นหาคีย์ API ที่จับคู่อัตโนมัติของแอปในไฟล์กำหนดค่า Firebase, GoogleService-Info.plist ในช่อง API_KEY

  • แอป Firebase Android — ค้นหาคีย์ API ที่จับคู่อัตโนมัติของแอปในไฟล์กำหนดค่า Firebase google-services.json ในช่อง current_key

  • Firebase Web Apps — ค้นหาคีย์ API ที่จับคู่อัตโนมัติของแอปในออบเจ็กต์การกำหนดค่า Firebase ในช่อง apiKey

การใช้คีย์ API

คีย์ API ใช้เพื่อระบุโปรเจ็กต์ Firebase ของคุณเมื่อโต้ตอบกับบริการ Firebase/Google โดยเฉพาะอย่างยิ่ง ใช้เพื่อเชื่อมโยงคำขอ API กับโปรเจ็กต์ของคุณสำหรับโควต้าและการเรียกเก็บเงิน ยังมีประโยชน์ในการเข้าถึงข้อมูลสาธารณะอีกด้วย

ตัวอย่างเช่น คุณสามารถใช้คีย์ API ได้อย่างชัดเจนโดยส่งค่าไปยังการเรียก REST API เป็นพารามิเตอร์การสืบค้น ตัวอย่างนี้แสดงวิธีที่คุณอาจส่งคำขอไปยัง Dynamic Links link shortener API :

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

เมื่อแอปของคุณทำการเรียก Firebase API แอปของคุณจะค้นหาคีย์ API ของโปรเจ็กต์ในไฟล์/ออบเจ็กต์การกำหนดค่า Firebase โดยอัตโนมัติ อย่างไรก็ตาม คุณสามารถตั้งค่าคีย์ API ของคุณได้โดยใช้กลไกอื่น รวมถึงตัวแปรสภาพแวดล้อมด้วย

ใช้ข้อจำกัดกับคีย์ API (แนะนำ)

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

กระชับโควต้าหากคุณใช้การรับรองความถูกต้องด้วยรหัสผ่าน

หากคุณใช้การตรวจสอบสิทธิ์ Firebase แบบใช้รหัสผ่านและมีคนได้รับคีย์ API ของคุณ พวกเขาจะ ไม่ สามารถเข้าถึงฐานข้อมูลหรือข้อมูล Cloud Storage ของโปรเจ็กต์ Firebase ของคุณ ได้ ตราบใดที่ข้อมูลนี้ได้รับการปกป้องโดย กฎความปลอดภัยของ Firebase อย่างไรก็ตาม พวกเขาสามารถใช้คีย์ API ของคุณเพื่อเข้าถึงจุดสิ้นสุดการตรวจสอบสิทธิ์ของ Firebase และส่งคำขอการตรวจสอบสิทธิ์กับโปรเจ็กต์ของคุณ

เพื่อบรรเทาความเป็นไปได้ที่บางคนอาจใช้คีย์ API ในทางที่ผิดเพื่อพยายามโจมตีแบบ Brute Force คุณสามารถกระชับโควต้าเริ่มต้นของตำแหน่ง identitytoolkit.googleapis.com ให้แน่นขึ้นเพื่อสะท้อนถึงความคาดหวังการรับส่งข้อมูลปกติของแอปของคุณ โปรดทราบว่าหากคุณกระชับโควต้านี้และแอปของคุณมีผู้ใช้เพิ่มขึ้นอย่างกะทันหัน คุณอาจได้รับข้อผิดพลาดในการลงชื่อเข้าใช้จนกว่าคุณจะเพิ่มโควต้า คุณสามารถเปลี่ยนโควต้า API ของโปรเจ็กต์ได้ใน คอนโซล Google Cloud

ใช้คีย์ API แบบจำกัดและแยกกันสำหรับ API บางประเภท

แม้ว่าโดยทั่วไปคีย์ API ที่ใช้สำหรับบริการ Firebase จะไม่จำเป็นต้องเป็นความลับ แต่คุณควรใช้ความระมัดระวังเป็นพิเศษกับคีย์ API ที่ใช้ในการให้สิทธิ์การเข้าถึง Google Cloud API ที่คุณเปิดใช้งานด้วยตนเอง

หากคุณใช้ Google Cloud API (บนแพลตฟอร์มใดๆ) ที่ Firebase ไม่ได้เปิดใช้งานโดยอัตโนมัติ (หมายความว่าคุณเปิดใช้งานด้วยตนเอง) คุณควรพิจารณาสร้างคีย์ API แบบจำกัดแยกต่างหากเพื่อใช้กับ API เหล่านั้น สิ่งนี้สำคัญอย่างยิ่งหาก API นั้นมีไว้สำหรับบริการ Google Cloud ที่เรียกเก็บเงินได้

ตัวอย่างเช่น หากคุณใช้ Cloud Vision API ของ Firebase ML บน iOS คุณควร สร้างคีย์ API แยกต่างหาก ที่คุณใช้สำหรับการเข้าถึง Cloud Vision API เท่านั้น

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

ใช้คีย์ API เฉพาะสภาพแวดล้อม (แนะนำ)

หากคุณตั้งค่าโปรเจ็กต์ Firebase ที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน เช่น การจัดเตรียมและการใช้งานจริง สิ่งสำคัญคือแต่ละอินสแตนซ์ของแอปจะต้องโต้ตอบกับโปรเจ็กต์ Firebase ที่เกี่ยวข้อง ตัวอย่างเช่น อินสแตนซ์แอปชั่วคราวของคุณไม่ควรสื่อสารกับโปรเจ็กต์ Firebase ที่ใช้งานจริงของคุณ นอกจากนี้ยังหมายความว่าแอปชั่วคราวของคุณจำเป็นต้องใช้คีย์ API ที่เชื่อมโยงกับโปรเจ็กต์ Firebase ชั่วคราวของคุณ

เพื่อลดปัญหาในการส่งเสริมการเปลี่ยนแปลงโค้ดจากการพัฒนาไปสู่การจัดเตรียมเป็นการใช้งานจริง แทนที่จะรวมคีย์ API ไว้ในโค้ด ให้ตั้งค่าคีย์เหล่านั้นเป็นตัวแปรสภาพแวดล้อมหรือรวมไว้ในไฟล์การกำหนดค่า

โปรดทราบว่าหากคุณใช้ Firebase Local Emulator Suite สำหรับการพัฒนาร่วมกับ Firebase ML คุณต้องสร้างและใช้คีย์ API สำหรับการแก้ไขข้อบกพร่องเท่านั้น คำแนะนำในการสร้างคีย์ประเภทนั้นอยู่ใน เอกสาร Firebase ML

คำถามที่พบบ่อย