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