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

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

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

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

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

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

แม้ว่าคีย์ API สำหรับบริการ Firebase จะรวมไว้ในโค้ดได้อย่างปลอดภัย แต่ก็มีบาง กรณีที่ คุณควรบังคับใช้ขีดจำกัดสำหรับคีย์ API ของคุณ ตัวอย่างเช่น หากคุณใช้ Firebase ML, Firebase Authentication ด้วยวิธีลงชื่อเข้าใช้อีเมล/รหัสผ่าน หรือ 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 Console ได้ เช่น สำหรับการพัฒนาหรือการดีบัก เรียนรู้เพิ่มเติมเกี่ยวกับเวลาที่อาจมีการแนะนำในหน้านี้

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

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

คุณยังค้นหา คีย์ API ที่จับคู่โดยอัตโนมัติกับแอป Firebase ได้จากที่ต่อไปนี้ โดยค่าเริ่มต้น แอป Firebase ของโปรเจ็กต์ทั้งหมด สำหรับแพลตฟอร์มเดียวกัน (Apple vs Android vs 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 เป็นพารามิเตอร์การสืบค้น ตัวอย่างนี้แสดงวิธีที่คุณอาจส่งคำขอไปยัง ไดนามิกลิงค์ลิงค์ย่อ API :

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

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

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

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

กระชับโควต้าหากคุณใช้การพิสูจน์ตัวตนด้วยรหัสผ่าน

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

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

ใช้คีย์ 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 ที่ใช้งานจริงของคุณ นอกจากนี้ยังหมายความว่าแอป staging ของคุณต้องใช้คีย์ API ที่เชื่อมโยงกับโปรเจ็กต์ staging Firebase ของคุณ

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

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

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