คีย์ 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 ไว้ในโค้ดหรือไฟล์กำหนดค่าที่เช็คอินได้
เว็บแอป 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
หากคุณใช้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
วิธีการเหล่านี้อธิบายวิธีสร้างคีย์ API ที่มีการจำกัดและแยกต่างหากสำหรับ API ปลอมที่ชื่อ Super Service API
ขั้นตอนที่ 1: กำหนดค่าคีย์ API ที่มีอยู่เพื่อไม่อนุญาตให้เข้าถึง Super Service API
เปิดหน้าข้อมูลเข้าสู่ระบบ
ของคอนโซล Google Cloud เมื่อได้รับข้อความแจ้ง ให้เลือกโปรเจ็กต์
สำหรับคีย์ API ที่มีอยู่แต่ละรายการในรายการ ให้เปิดมุมมองการแก้ไข
ในส่วนการจำกัด API ให้เลือกจำกัดคีย์ แล้วเพิ่ม API ทั้งหมดที่คุณต้องการให้คีย์ API มีสิทธิ์เข้าถึงลงในรายการ ตรวจสอบว่าไม่ได้รวม API ที่คุณกำลังสร้างคีย์ API แยกต่างหาก
(ในตัวอย่างนี้คือ Super Service API)
เมื่อกำหนดค่าข้อจำกัด API ของคีย์ API คุณจะประกาศอย่างชัดเจน
ถึง API ที่คีย์มีสิทธิ์เข้าถึง โดยค่าเริ่มต้น เมื่อส่วนการจำกัด API เลือกไม่จำกัดคีย์ คุณจะใช้คีย์ API เพื่อเข้าถึง API ใดก็ได้ที่เปิดใช้สำหรับโปรเจ็กต์
ตอนนี้คีย์ API ที่มีอยู่จะไม่ให้สิทธิ์เข้าถึง Super Service API แต่คีย์แต่ละรายการจะยังคงใช้ได้กับ API ที่คุณเพิ่มลงในรายการข้อจำกัด API
ขั้นตอนที่ 2: สร้างและใช้คีย์ API ใหม่เพื่อเข้าถึง Super Service API
หากต้องการลดปัญหาในการโปรโมตการเปลี่ยนแปลงโค้ดจากสภาพแวดล้อมการพัฒนาไปสู่สภาพแวดล้อมการจัดเตรียมและสภาพแวดล้อมการใช้งานจริง ให้ตั้งค่าคีย์ API เป็นตัวแปรสภาพแวดล้อมหรือรวมไว้ในไฟล์การกำหนดค่าแทนที่จะรวมไว้ในโค้ด
โปรดทราบว่าหากใช้ Firebase Local Emulator Suite เพื่อการพัฒนาควบคู่กับ Firebase ML คุณจะต้องสร้างและใช้คีย์ API สำหรับการแก้ไขข้อบกพร่องเท่านั้น ดูวิธีการสร้างคีย์ประเภทดังกล่าวได้ในเอกสารประกอบของ Firebase ML
คำถามที่พบบ่อยและการแก้ปัญหา
คำถามที่พบบ่อย
คีย์ API
สำหรับบริการ Firebase ถูกจำกัดโดยค่าเริ่มต้นไหม
ได้ โดยค่าเริ่มต้น คีย์ API ทั้งหมดที่ Firebase จัดสรรให้โดยอัตโนมัติเพื่อใช้กับ API ที่เกี่ยวข้องกับ Firebase จะมี"ข้อจํากัดของ API"
ที่ใช้โดยอัตโนมัติ ดูรายการ API ที่เกี่ยวข้องกับ Firebase
ที่อยู่ในรายการที่อนุญาตนี้
API ที่เพิ่มลงในรายการที่อนุญาตนี้คือ API ที่บริการ Firebase เรียกใช้จากโค้ดฝั่งไคลเอ็นต์ และต้องใช้คีย์ API เพื่อระบุโปรเจ็กต์หรือแอป Firebase โปรดทราบว่า API ส่วนใหญ่ที่จำเป็นสำหรับการใช้บริการ Firebase ไม่จำเป็นต้องอยู่ในรายการที่อนุญาตสำหรับคีย์ API
เนื่องจาก Firebase เพิ่ม API ที่จำเป็นสำหรับบริการ Firebase ทั้งหมด รายการที่อนุญาตสำหรับคีย์ API จึงอาจรวม API สำหรับผลิตภัณฑ์ที่คุณไม่ได้ใช้ คุณสามารถนำ API ออกจากรายการที่อนุญาตได้ แต่ต้องระมัดระวังเป็นอย่างยิ่งเพื่อไม่ให้นำ
API ที่จำเป็นสำหรับ Firebase และบริการ Firebase ที่คุณใช้ออก (ดูรายการ API ที่เกี่ยวข้องกับ Firebase
ที่ต้องอยู่ในรายการที่อนุญาตสำหรับแต่ละบริการ / ผลิตภัณฑ์) ไม่เช่นนั้น คุณจะได้รับข้อผิดพลาดเมื่อโทรไปยังบริการของ Firebase
ตั้งแต่เดือนพฤษภาคม 2024 เป็นต้นไป คีย์ API ใหม่ทั้งหมดที่ Firebase จัดสรรให้โดยอัตโนมัติจะ
ถูกจํากัดโดยอัตโนมัติให้ใช้ได้กับ
รายการ API ที่เกี่ยวข้องกับ Firebase
ในช่วงเดือนพฤษภาคม 2024 คีย์ API ที่มีอยู่ทั้งหมดและไม่จำกัดซึ่ง Firebase ได้จัดสรรโดยอัตโนมัติก่อนหน้านี้จะถูกจำกัดให้ใช้ได้กับรายการ API ที่เกี่ยวข้องกับ Firebaseรวมถึง API ใดๆ ที่เปิดใช้ในโปรเจ็กต์ในปัจจุบัน
คีย์ API ที่มีอยู่และถูกจำกัดแล้วซึ่ง Firebase จัดสรรให้โดยอัตโนมัติก่อนหน้านี้จะไม่เปลี่ยนแปลง
คีย์ API ที่มีอยู่ซึ่ง Firebase ไม่ได้จัดสรรให้โดยอัตโนมัติจะไม่
มีการเปลี่ยนแปลง
ฉันจะระบุคีย์ API ใดที่เชื่อมโยงกับแอป Firebase ได้อย่างไร
คุณใช้ตัวเลือกใดก็ได้ต่อไปนี้เพื่อระบุว่าคีย์ API ใดที่เชื่อมโยงกับแอป Firebase
เว็บแอป Firebase - แต่ละแอปมีออบเจ็กต์การกำหนดค่าของตัวเองและมีคีย์ API ได้เพียงรายการเดียว
แต่คุณใช้คีย์ API หลายรายการกับแอปเดียวได้ คุณต้องระบุกลไกให้แอปเข้าถึงคีย์ API อื่นๆ เหล่านี้ เช่น ผ่านตัวแปรสภาพแวดล้อม
กลไกในการเข้าถึงคีย์ API อื่นๆ ไม่สามารถขึ้นอยู่กับคีย์ API เหล่านั้นที่แสดงอยู่ในไฟล์/ออบเจ็กต์การกำหนดค่า Firebase
Firebase ทราบได้อย่างไรว่าควรจับคู่คีย์ API ใดกับแอป (เช่น ในไฟล์/ออบเจ็กต์การกำหนดค่า Firebase)
ฉันย้ายคีย์ API จากโปรเจ็กต์ Firebase หนึ่งไปยังอีกโปรเจ็กต์หนึ่งได้ไหม
ไม่ได้ คีย์ API จะระบุโปรเจ็กต์ที่เฉพาะเจาะจงเท่านั้นและย้ายไปยังโปรเจ็กต์อื่นไม่ได้
จะเกิดอะไรขึ้นหากฉัน
ลบคีย์ API ที่แสดงในGoogle Cloudคอนโซล
หากคุณลบคีย์ API ที่แอปใช้อยู่ การเรียก API จากแอปนั้นจะล้มเหลว
คุณอาจได้รับรายงาน อีเมล หรือข้อผิดพลาดที่ระบุว่าคุณพยายามใช้
คีย์ API ที่ไม่ถูกต้อง
การลบคีย์ API จะมีผลถาวรและยกเลิกไม่ได้
ต้องระบุ API ใดในรายการที่อนุญาตของ "ข้อจำกัด API" สำหรับคีย์ API ของ Firebase
สำหรับคีย์ API ของ Firebase API เดียวที่ต้องอยู่ในรายการที่อนุญาตของ "การจำกัด API" ของคีย์คือ API ที่กำหนดให้ไคลเอ็นต์ต้องระบุคีย์ API พร้อมกับการเรียก โปรดทราบว่ามี API ที่เกี่ยวข้องกับ Firebase เพียงไม่กี่รายการเท่านั้นที่ต้องมีข้อกำหนดนี้ API ส่วนใหญ่ที่เกี่ยวข้องกับ Firebase ซึ่งเปิดใช้ในโปรเจ็กต์ไม่จำเป็นต้องอยู่ในรายการที่อนุญาตของ "ข้อจำกัดของ API" ของคีย์
ใช้ตารางต่อไปนี้เพื่อพิจารณาว่า API ที่เกี่ยวข้องกับ Firebase ใดที่ต้องรวมไว้ในรายการที่อนุญาตของ "การจำกัด API" สำหรับคีย์ API ของ Firebase โปรดทราบว่า
คีย์ API ของ Firebase ควรใช้กับบริการ Firebase เท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับ
การสร้าง
คีย์ API ที่แยกต่างหากและจำกัดสำหรับ API บางประเภท
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
คีย์ API ที่แอปใช้เพื่อเรียก API อาจมี"ข้อจำกัดของ API"
ที่ใช้กับคีย์นั้น และรายการที่อนุญาตของคีย์ไม่มี API นั้น
หากคุณได้รับข้อผิดพลาดนี้เมื่อพยายามใช้บริการที่ไม่ใช่ Firebase เราขอแนะนำอย่างยิ่งให้สร้างคีย์ API ใหม่สำหรับบริการและ API นั้นโดยเฉพาะ คีย์ API ของ Firebase ควรใช้กับบริการ / ผลิตภัณฑ์ Firebase เท่านั้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคีย์ API ที่แยกต่างหากและจำกัดสำหรับ API บางประเภท