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

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

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

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

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

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

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

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

ตรวจสอบและใช้ข้อจำกัดที่เหมาะสมกับคีย์ API (แนะนำ)

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

ตรวจสอบ API ที่เพิ่มลงในรายการที่อนุญาตโดยอัตโนมัติสำหรับคีย์ Firebase API ของคุณ

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

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

จำกัดโควต้าหากคุณใช้การตรวจสอบสิทธิ์ด้วยรหัสผ่าน

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

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

ใช้คีย์ API ที่ถูกจำกัดแยกต่างหากสำหรับบริการที่ไม่ใช่ Firebase

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

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

เช่น หากใช้ Firebase ML และ Cloud Vision API ใน 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

คำถามที่พบบ่อยและการแก้ปัญหา

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

การแก้ปัญหา