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

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

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

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

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

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

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

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

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

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

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

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

จำกัดโควตาให้น้อยลงหากคุณใช้ Authentication ตามรหัสผ่าน

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

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

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

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

หากคุณใช้ 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เอกสารประกอบ

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

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

การแก้ปัญหา