คีย์ API คือสตริงที่ไม่ซ้ำกันซึ่งใช้เพื่อกำหนดเส้นทางคำขอไปยังโปรเจ็กต์ Firebase เมื่อโต้ตอบกับบริการ Firebase และ Google หน้านี้อธิบายข้อมูลพื้นฐานเกี่ยวกับคีย์ API รวมถึงแนวทางปฏิบัติแนะนำในการใช้และจัดการคีย์ API กับแอป Firebase
ข้อมูลทั่วไปเกี่ยวกับคีย์ API และ Firebase
คีย์ API สำหรับ Firebase แตกต่างจากคีย์ API ทั่วไป
เว็บแอป 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
คุณสามารถจำกัดโควต้าเริ่มต้นของปลายทาง 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
วิธีการเหล่านี้อธิบายวิธีสร้างคีย์ 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 ของ Super Service 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 ที่เกี่ยวข้องกับ Firebase มีข้อกําหนดนี้เพียงไม่กี่รายการ API ส่วนใหญ่ที่เกี่ยวข้องกับ Firebase ที่เปิดใช้ในโปรเจ็กต์ไม่จำเป็นต้องอยู่ในรายการที่อนุญาต "ข้อจำกัด API" ของคีย์
ใช้ตารางต่อไปนี้เพื่อระบุว่า API ใดที่เกี่ยวข้องกับ Firebase ที่ต้องรวมไว้ในรายการที่อนุญาต "การจํากัด API" สําหรับคีย์ API ของ Firebase โปรดทราบว่าคุณควรใช้คีย์ Firebase API กับบริการ 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 นั้นโดยเฉพาะ คุณควรใช้คีย์ Firebase API กับบริการ / ผลิตภัณฑ์ Firebase เท่านั้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคีย์ API ที่แยกต่างหากและจํากัดสําหรับ API บางประเภท