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

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

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

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

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

โดยปกติแล้ว คุณต้องปกป้องคีย์ API อย่างเข้มงวด (เช่น โดยใช้บริการ Vault หรือตั้งค่าคีย์เป็นตัวแปรสภาพแวดล้อม) อย่างไรก็ตาม คุณสามารถใส่คีย์ 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 เดียวกัน

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

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

  • เว็บแอป Firebase - ค้นหาคีย์ API ที่จับคู่โดยอัตโนมัติในออบเจ็กต์ Firebase config ในช่อง apiKey

การใช้คีย์ API

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

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

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

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

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

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

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

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

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

เพิ่มโควตาหากคุณใช้ Authentication ที่อิงตามรหัสผ่าน

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

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

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

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

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

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

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

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

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

การแก้ปัญหา