คีย์ API คือสตริงเฉพาะที่ใช้เพื่อกำหนดเส้นทางคำขอไปยังโปรเจ็กต์ Firebase เมื่อโต้ตอบกับ Firebase และบริการของ Google หน้านี้อธิบายข้อมูลพื้นฐานเกี่ยวกับคีย์ API รวมถึงแนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้และจัดการคีย์ API ด้วยแอป Firebase
ข้อมูลทั่วไปเกี่ยวกับคีย์ API และ Firebase
คีย์ API สำหรับ Firebase แตกต่างจากคีย์ API ทั่วไป
คีย์ API สำหรับบริการ Firebase ไม่ เหมือนกับการใช้คีย์ API ทั่วไปเพื่อควบคุมการเข้าถึงทรัพยากรแบ็กเอนด์ ที่สามารถทำได้ด้วยกฎความปลอดภัยของ Firebase เท่านั้น (เพื่อควบคุมว่าผู้ใช้รายใดสามารถเข้าถึงทรัพยากร) และการตรวจสอบแอป (เพื่อควบคุมว่าแอปใดสามารถเข้าถึงทรัพยากร)
โดยปกติ คุณจะต้องปกป้องคีย์ API อย่างพิถีพิถัน (เช่น โดยใช้บริการห้องนิรภัยหรือตั้งค่าคีย์เป็นตัวแปรสภาพแวดล้อม) อย่างไรก็ตาม คีย์ API สำหรับบริการ Firebase สามารถรวมไว้ในโค้ดหรือไฟล์กำหนดค่าที่เช็คอินได้
แม้ว่าคีย์ API สำหรับบริการ Firebase จะรวมไว้ในโค้ดได้อย่างปลอดภัย แต่ก็มีบาง กรณีที่ คุณควรบังคับใช้ขีดจำกัดสำหรับคีย์ API ของคุณ ตัวอย่างเช่น หากคุณใช้ Firebase ML, Firebase Authentication ด้วยวิธีลงชื่อเข้าใช้อีเมล/รหัสผ่าน หรือ Google Cloud API ที่เรียกเก็บเงินได้ เรียนรู้เพิ่มเติมเกี่ยวกับกรณีเหล่านี้ในภายหลังในหน้านี้
การสร้างคีย์ API
โปรเจ็กต์ Firebase สามารถมีคีย์ API ได้หลายคีย์ แต่คีย์ API แต่ละคีย์สามารถเชื่อมโยงกับโปรเจ็กต์ Firebase เดียวเท่านั้น
Firebase จะสร้างคีย์ API สำหรับโปรเจ็กต์ของคุณโดยอัตโนมัติเมื่อคุณทำสิ่งใดสิ่งหนึ่งต่อไปนี้:
- สร้างโปรเจ็กต์ Firebase > สร้าง
Browser key
อัตโนมัติ - สร้างแอพ Firebase Apple > สร้าง
iOS key
อัตโนมัติ - สร้างแอป Firebase สำหรับ Android > สร้าง
Android key
อัตโนมัติ
คุณยังสามารถสร้างคีย์ API ของคุณเองใน Google Cloud Console ได้ เช่น สำหรับการพัฒนาหรือการดีบัก เรียนรู้เพิ่มเติมเกี่ยวกับเวลาที่อาจมีการแนะนำในหน้านี้
ค้นหาคีย์ API ของคุณ
คุณสามารถดูและจัดการคีย์ API ของโปรเจ็กต์ ทั้งหมด ได้ในแผง API และบริการ > ข้อมูลรับรอง ใน Google Cloud Console
คุณยังค้นหา คีย์ API ที่จับคู่โดยอัตโนมัติกับแอป Firebase ได้จากที่ต่อไปนี้ โดยค่าเริ่มต้น แอป Firebase ของโปรเจ็กต์ทั้งหมด สำหรับแพลตฟอร์มเดียวกัน (Apple vs Android vs Web) จะใช้คีย์ API เดียวกัน
Firebase Apple Apps — ค้นหาคีย์ API ที่จับคู่อัตโนมัติของแอปในไฟล์กำหนดค่า Firebase,
ในช่องGoogleService-Info.plist API_KEY
แอป Firebase สำหรับ Android — ค้นหาคีย์ API ที่จับคู่อัตโนมัติของแอปในไฟล์กำหนดค่า Firebase
ในฟิลด์google-services.json current_key
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 แอปของคุณจะค้นหาไฟล์/อ็อบเจ็กต์การกำหนดค่า Firebase โดยอัตโนมัติสำหรับคีย์ API ของโปรเจ็กต์ของคุณ อย่างไรก็ตาม คุณสามารถตั้งค่าคีย์ API ของคุณโดยใช้กลไกอื่น ซึ่งรวมถึงตัวแปรสภาพแวดล้อมด้วย
ใช้ข้อจำกัดกับคีย์ API (แนะนำ)
แม้ว่าจะไม่จำเป็นต้องปฏิบัติกับคีย์ API สำหรับบริการ Firebase เป็นความลับ แต่ก็มีบางกรณีที่เฉพาะเจาะจง (ดูด้านล่าง) ที่คุณอาจต้องการใช้มาตรการเพิ่มเติมเพื่อปกป้องโครงการของคุณจากการใช้คีย์ API ในทางที่ผิด
กระชับโควต้าหากคุณใช้การพิสูจน์ตัวตนด้วยรหัสผ่าน
หากคุณใช้การตรวจสอบสิทธิ์ Firebase แบบใช้รหัสผ่านและมีผู้ได้รับคีย์ API ของคุณ พวกเขาจะ ไม่ สามารถเข้าถึงฐานข้อมูลของโปรเจ็กต์ Firebase หรือข้อมูล Cloud Storage ได้ตราบใดที่ข้อมูลนี้ได้รับการปกป้องโดย กฎความปลอดภัยของ Firebase อย่างไรก็ตาม พวกเขาสามารถใช้คีย์ API ของคุณเพื่อเข้าถึงปลายทางการตรวจสอบสิทธิ์ของ Firebase และทำการร้องขอการตรวจสอบสิทธิ์กับโปรเจ็กต์ของคุณ
เพื่อลดความเป็นไปได้ที่อาจมีผู้อื่นใช้คีย์ API ในทางที่ identitytoolkit.googleapis.com
เพื่อพยายามโจมตีด้วยกำลังเดรัจฉาน คุณสามารถกระชับโควตาเริ่มต้นของตำแหน่งข้อมูล โปรดทราบว่าหากคุณกระชับโควต้านี้และแอปของคุณก็มีผู้ใช้เพิ่มขึ้นอย่างกะทันหัน คุณอาจได้รับข้อผิดพลาดในการลงชื่อเข้าใช้จนกว่าคุณจะเพิ่มโควต้า คุณสามารถเปลี่ยนโควต้า API ของโปรเจ็กต์ได้ใน Google Cloud Console
ใช้คีย์ API แบบจำกัดที่แยกจากกันสำหรับ API บางประเภท
แม้ว่าโดยทั่วไปแล้วคีย์ API ที่ใช้สำหรับบริการ Firebase จะไม่จำเป็นต้องถือเป็นความลับ แต่คุณควรใช้ความระมัดระวังเป็นพิเศษด้วยคีย์ API ที่ใช้ในการให้สิทธิ์เข้าถึง Google Cloud API ที่คุณเปิดใช้งานด้วยตนเอง
หากคุณใช้ Google Cloud API (บนแพลตฟอร์มใดๆ) ที่ไม่ได้เปิดใช้งานโดยอัตโนมัติโดย Firebase (หมายถึงคุณเปิดใช้งานเอง) คุณควรพิจารณาสร้างคีย์ API ที่จำกัดและแยกต่างหากสำหรับใช้กับ API เหล่านั้น นี่เป็นสิ่งสำคัญอย่างยิ่งหาก API นั้นใช้สำหรับบริการ Google Cloud ที่เรียกเก็บเงินได้
ตัวอย่างเช่น หากคุณใช้ Cloud Vision API ของ Firebase ML บน iOS คุณควร สร้างคีย์ API แยกต่างหาก ที่คุณใช้เพื่อเข้าถึง Cloud Vision API เท่านั้น
เมื่อใช้คีย์ API แบบจำกัดที่แยกจากกันสำหรับ API ที่ไม่ใช่ Firebase คุณจะหมุนเวียนหรือเปลี่ยนคีย์ได้เมื่อจำเป็น และ เพิ่มข้อจำกัดเพิ่มเติมให้กับคีย์ API โดยไม่กระทบต่อการใช้บริการ Firebase
คำแนะนำเหล่านี้อธิบายวิธีสร้างคีย์ API แบบจำกัดแยกต่างหากสำหรับ API ปลอม ที่เรียกว่า Super Service API
ขั้นตอนที่ 1: กำหนดค่าคีย์ API ที่มีอยู่ของคุณเพื่อไม่อนุญาตให้เข้าถึง Super Service API
เปิดหน้า ข้อมูลรับรอง ของ Google Cloud Console เมื่อได้รับแจ้ง ให้เลือกโครงการของคุณ
สำหรับแต่ละคีย์ API ที่มีอยู่ในรายการ ให้เปิดมุมมองการแก้ไข
ในส่วน ข้อจำกัด API ให้เลือก Restrict key จากนั้นเพิ่ม API ทั้งหมดที่คุณต้องการให้คีย์ API เข้าถึงในรายการ ตรวจสอบให้แน่ใจ ว่าไม่ได้ รวม API ที่คุณกำลังสร้างคีย์ API แยกต่างหาก (ในตัวอย่างนี้
Super Service API
)เมื่อคุณกำหนดค่า ข้อจำกัด API ของคีย์ API แสดงว่าคุณกำลังประกาศ API ที่คีย์มีสิทธิ์เข้าถึงอย่างชัดเจน โดยค่าเริ่มต้น เมื่อส่วน ข้อจำกัด API ได้เลือก "ไม่จำกัดคีย์ " คุณสามารถใช้คีย์ API เพื่อเข้าถึง API ใดๆ ที่เปิดใช้งานสำหรับโปรเจ็กต์ได้
ตอนนี้ คีย์ API ที่มีอยู่ของคุณจะไม่ให้สิทธิ์เข้าถึง Super Service API
แต่แต่ละคีย์จะยังคงทำงานสำหรับ API ใดๆ ที่คุณเพิ่มลงในรายการ ข้อจำกัดของ API
ขั้นตอนที่ 2: สร้างและใช้คีย์ API ใหม่สำหรับการเข้าถึง Super Service API
กลับไปที่หน้า ข้อมูลรับรอง ตรวจสอบว่ายังคงเลือกโปรเจ็กต์ Firebase อยู่
คลิก สร้างข้อมูลรับรอง > คีย์ API จดบันทึกคีย์ API ใหม่ จากนั้นคลิก จำกัดคีย์
ในส่วน ข้อจำกัดของ API ให้เลือก Restrict key จากนั้นเพิ่มเฉพาะ
Super Service API
ในรายการ เท่านั้นคีย์ API ใหม่นี้ให้สิทธิ์การเข้าถึงกับ
Super Service API
เท่านั้นกำหนดค่าแอพและบริการของคุณเพื่อใช้คีย์ API ใหม่
ใช้คีย์ API เฉพาะสภาพแวดล้อม (แนะนำ)
หากคุณตั้งค่าโปรเจ็กต์ Firebase ที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน เช่น การจัดเตรียมและการใช้งานจริง อินสแตนซ์ของแอปแต่ละรายการจะต้องโต้ตอบกับโปรเจ็กต์ Firebase ที่สอดคล้องกัน ตัวอย่างเช่น อินสแตนซ์แอปการแสดงละครของคุณไม่ควรพูดคุยกับโปรเจ็กต์ Firebase ที่ใช้งานจริงของคุณ นอกจากนี้ยังหมายความว่าแอป staging ของคุณต้องใช้คีย์ API ที่เชื่อมโยงกับโปรเจ็กต์ staging Firebase ของคุณ
เพื่อลดปัญหาในการส่งเสริมการเปลี่ยนแปลงโค้ดจากการพัฒนาไปสู่การจัดเตรียมจนถึงการผลิต แทนที่จะรวมคีย์ API ไว้ในตัวโค้ด ให้ตั้งค่าเป็นตัวแปรสภาพแวดล้อมหรือรวมไว้ในไฟล์การกำหนดค่า
โปรดทราบว่าหากคุณใช้ Firebase Local Emulator Suite เพื่อการพัฒนาร่วมกับ Firebase ML คุณต้องสร้างและใช้คีย์ API สำหรับดีบักเท่านั้น คำแนะนำสำหรับการสร้างคีย์ประเภทดังกล่าวมีอยู่ใน เอกสาร Firebase ML
คำถามที่พบบ่อย
คุณสามารถใช้ตัวเลือกใดๆ ต่อไปนี้เพื่อกำหนดคีย์ API ที่เชื่อมโยงกับแอป Firebase ของคุณ:
คอนโซล Firebase
ไปที่ โครงการ แล้วเลื่อนลงไปที่การ์ด แอปของคุณ
เลือกแอพที่สนใจ
รับไฟล์/อ็อบเจ็กต์การกำหนดค่า Firebase สำหรับแอปที่สนใจ จากนั้นค้นหาคีย์ API:
Apple : ดาวน์โหลด
GoogleService-Info.plist
แล้วหาช่องAPI_KEY
Android : ดาวน์โหลด
google-services.json
ค้นหาการกำหนดค่าสำหรับแอพที่สนใจ (มองหาชื่อแพ็คเกจ) จากนั้นค้นหาฟิลด์current_key
เว็บ : เลือกตัวเลือก Config จากนั้นค้นหาฟิลด์
apiKey
Firebase CLI
รับไฟล์/วัตถุกำหนดค่า Firebase สำหรับแอปที่สนใจโดยเรียกใช้คำสั่งต่อไปนี้:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (หนึ่งใน):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : ตัวระบุที่ไม่ซ้ำที่กำหนดโดย Firebase สำหรับแอป Firebase ของคุณ ( ค้นหา ID แอปของคุณ )
- PLATFORM (หนึ่งใน):
ในการกำหนดค่า Firebase ที่พิมพ์ของแอป ให้ค้นหาคีย์ API:
Apple : ค้นหาฟิลด์
API_KEY
Android : ค้นหาการกำหนดค่าสำหรับแอพที่สนใจ (มองหาชื่อแพ็คเกจ) จากนั้นค้นหา
current_key
fieldเว็บ : ค้นหาฟิลด์
apiKey
REST API
รับ
apiKeyId
(UID) ของคีย์ API โดยเรียกปลายทางที่เกี่ยวข้องสำหรับแอปที่สนใจ จากนั้นส่งค่าapiKeyId
ไปยังขั้นตอนถัดไป- Apple : โทร
projects.iosApps.get
ต์.iosApps.get - Android : โทร
projects.androidApps.get
ต์.androidApps.get - เว็บ : โทร
projects.webApps.get
ต์.webApps.get
- Apple : โทร
รับสตริงคีย์ API โดยการเรียก
projects.locations.keys.getKeyString
keyString
นี้เป็นค่าเดียวกับที่พบในส่วนกำหนดค่าของแอป ( Apple | Android | Web )
แอพ Firebase Apple — แต่ละแอพมีไฟล์ปรับแต่งของตัวเองและสามารถมีคีย์ API ได้เพียงรายการเดียวเท่านั้น
แอป Firebase สำหรับ Android — แอป Android ทั้งหมดในโปรเจ็กต์ Firebase จะแสดงอยู่ในไฟล์การกำหนดค่าเดียวกัน และ แต่ละ แอปสามารถมีคีย์ API ได้เพียงรายการเดียวเท่านั้น แต่ละแอปในไฟล์กำหนดค่านี้สามารถมีรายการคีย์ที่แตกต่างกันได้
Firebase Web Apps — แต่ละแอปมีออบเจ็กต์การกำหนดค่าของตัวเองและสามารถมีคีย์ API ได้เพียงรายการเดียวเท่านั้น
คุณ สามารถ ใช้คีย์ API หลายคีย์กับแอปเดียวได้ คุณต้องจัดเตรียมกลไกสำหรับแอปของคุณเพื่อเข้าถึงคีย์ API อื่นๆ เหล่านี้ เช่น ผ่านตัวแปรสภาพแวดล้อม กลไกในการเข้าถึงคีย์ API อื่นๆ ไม่สามารถขึ้นอยู่กับคีย์ API เหล่านั้นที่แสดงอยู่ในไฟล์/อ็อบเจ็กต์การกำหนดค่า Firebase ของคุณ
เมื่อคุณ ได้รับไฟล์/วัตถุกำหนดค่า Firebase ของแอปเป็น ครั้งแรก Firebase จะตรวจสอบว่ามีคีย์ API ใดๆ อยู่ในโปรเจ็กต์ของคุณที่มี "ข้อจำกัดแอปพลิเคชัน" ที่ตรงกับแอปหรือไม่ (เช่น ID ชุดที่ตรงกันสำหรับแอป Apple)
หาก Firebase ไม่พบคีย์ที่จำกัดที่ตรงกัน ระบบจะแสดงรายการในไฟล์กำหนดค่า/วัตถุของ iOS key
สำหรับแอป Apple, Android key
Android สำหรับแอป Android และ Browser key
สำหรับเว็บแอป (สมมติว่าคีย์เหล่านี้มีอยู่และ ไม่มี "ข้อจำกัดของแอปพลิเคชัน" ที่ทำให้ไม่สามารถจับคู่กับแอปนั้นได้)
ได้ คุณสามารถลบคีย์ API ด้วยตนเองจากไฟล์การกำหนดค่า/อ็อบเจ็กต์ได้ อย่างไรก็ตาม คุณต้องระบุกลไกอื่นๆ สำหรับแอปของคุณเพื่อเข้าถึงคีย์ API (เช่น ผ่านตัวแปรสภาพแวดล้อม) มิฉะนั้น การเรียกใช้บริการ Firebase จะล้มเหลว
ได้ คุณสามารถแก้ไขไฟล์การกำหนดค่า/วัตถุด้วยตนเองเพื่อเชื่อมโยงคีย์ API อื่นกับแอปได้
โปรดทราบว่าหากคุณ ได้รับไฟล์การกำหนดค่า/วัตถุของแอปอีกครั้ง จากคอนโซล จะมีการแสดงรายการคีย์ API ที่ Firebase จับคู่โดยอัตโนมัติกับแอป นั้น ดังนั้น คุณจะต้องทำการแก้ไขด้วยตนเองซ้ำตามความจำเป็น
ไม่ คีย์ API ระบุเฉพาะโปรเจ็กต์เฉพาะและไม่สามารถย้ายไปยังโปรเจ็กต์อื่นได้
สาเหตุทั่วไปบางประการสำหรับคีย์ API ที่ไม่ถูกต้องมีดังนี้
คีย์ API มีการใช้ "การจำกัดคีย์ API" ซึ่งทำให้ไม่สามารถจับคู่กับแอปที่พยายามใช้คีย์ได้ ("ข้อจำกัดของแอปพลิเคชัน") หรือไม่สามารถใช้งานได้สำหรับการเรียก API ("การจำกัด API")
คีย์ API ถูกลบออกจากโปรเจ็กต์ใน Google Cloud Console
ไม่ได้สร้างคีย์ API สำหรับรหัสโปรเจ็กต์ที่แสดงอยู่ในไฟล์/อ็อบเจ็กต์การกำหนดค่า Firebase ของแอป
วิธีหนึ่งในการแก้ไขปัญหานี้คือ ขอรับเวอร์ชันที่อัปเดตของไฟล์/วัตถุ config Firebase ของแอป จากนั้น แทนที่ ไฟล์/วัตถุ config เก่าของคุณด้วยไฟล์/วัตถุที่อัปเดตใหม่ ก่อนส่งไฟล์กำหนดค่าเพื่อดาวน์โหลดหรือแสดงวัตถุการกำหนดค่าในคอนโซล Firebase จะตรวจสอบว่าคีย์ API ที่ระบุไว้ ตรงกับแอปหรือ ไม่
คีย์ API ที่เว็บแอปของคุณใช้อาจมี "ข้อจำกัด API" ที่ใช้อยู่ หากเป็นกรณีนี้ ตรวจสอบให้แน่ใจว่า Firebase Management API อยู่ในรายการ API ที่อนุญาต
หากคุณลบคีย์ API ที่ใช้โดยแอป การเรียก API จากแอปนั้นจะล้มเหลว คุณอาจได้รับรายงาน อีเมล หรือข้อผิดพลาดที่คุณกำลังพยายามใช้คีย์ API ที่ไม่ถูกต้อง
การลบคีย์ API จะมีผลถาวรและไม่สามารถยกเลิกได้