คีย์ API คือสตริงเฉพาะที่ใช้ในการกำหนดเส้นทางคำขอไปยังโปรเจ็กต์ Firebase ของคุณเมื่อโต้ตอบกับ Firebase และบริการของ Google หน้านี้อธิบายข้อมูลพื้นฐานเกี่ยวกับคีย์ API รวมถึงแนวทางปฏิบัติที่ดีที่สุดในการใช้และจัดการคีย์ API ด้วยแอป Firebase
ข้อมูลทั่วไปเกี่ยวกับคีย์ API และ Firebase
คีย์ API สำหรับ Firebase แตกต่างจากคีย์ API ทั่วไป
ซึ่งแตกต่างจากวิธีการใช้คีย์ API โดยทั่วไป คีย์ API สำหรับบริการ Firebase จะ ไม่ ถูกใช้เพื่อควบคุมการเข้าถึงทรัพยากรแบ็กเอนด์ ที่สามารถทำได้ด้วยกฎความปลอดภัยของ Firebase เท่านั้น (เพื่อควบคุมผู้ใช้ที่สามารถเข้าถึงทรัพยากรได้) และ App Check (เพื่อควบคุมว่าแอปใดที่สามารถเข้าถึงทรัพยากรได้)
โดยปกติแล้ว คุณจะต้องปกป้องคีย์ API อย่างระมัดระวัง (เช่น โดยการใช้บริการห้องนิรภัยหรือตั้งค่าคีย์เป็นตัวแปรสภาพแวดล้อม) อย่างไรก็ตาม คีย์ API สำหรับบริการ Firebase สามารถรวมไว้ในโค้ดหรือไฟล์การกำหนดค่าที่เช็คอินได้
แม้ว่าคีย์ API สำหรับบริการ Firebase จะรวมไว้ในโค้ดได้อย่างปลอดภัย แต่ก็มีบาง กรณี ที่คุณควรบังคับใช้ขีดจำกัดสำหรับคีย์ API ของคุณ ตัวอย่างเช่น หากคุณใช้ Firebase ML, การตรวจสอบสิทธิ์ Firebase ด้วยวิธีลงชื่อเข้าใช้อีเมล/รหัสผ่าน หรือ 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 กับ Android และ 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 เป็นพารามิเตอร์การสืบค้น ตัวอย่างนี้แสดงวิธีที่คุณอาจส่งคำขอไปยัง Dynamic Links link shortener API :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
เมื่อแอปของคุณทำการเรียก Firebase API แอปของคุณจะค้นหาคีย์ API ของโปรเจ็กต์ในไฟล์/ออบเจ็กต์การกำหนดค่า Firebase โดยอัตโนมัติ อย่างไรก็ตาม คุณสามารถตั้งค่าคีย์ API ของคุณได้โดยใช้กลไกอื่น รวมถึงตัวแปรสภาพแวดล้อมด้วย
ใช้ข้อจำกัดกับคีย์ API (แนะนำ)
แม้ว่าไม่จำเป็นต้องถือว่าคีย์ API สำหรับบริการ Firebase เป็นความลับ แต่ก็มีบางกรณีเฉพาะ (ดูด้านล่าง) ที่คุณอาจต้องการใช้มาตรการเพิ่มเติมเพื่อปกป้องโปรเจ็กต์ของคุณจากการใช้คีย์ API ในทางที่ผิด
กระชับโควต้าหากคุณใช้การรับรองความถูกต้องด้วยรหัสผ่าน
หากคุณใช้การตรวจสอบสิทธิ์ Firebase แบบใช้รหัสผ่านและมีคนได้รับคีย์ API ของคุณ พวกเขาจะ ไม่ สามารถเข้าถึงฐานข้อมูลหรือข้อมูล Cloud Storage ของโปรเจ็กต์ Firebase ของคุณ ได้ ตราบใดที่ข้อมูลนี้ได้รับการปกป้องโดย กฎความปลอดภัยของ Firebase อย่างไรก็ตาม พวกเขาสามารถใช้คีย์ API ของคุณเพื่อเข้าถึงจุดสิ้นสุดการตรวจสอบสิทธิ์ของ Firebase และส่งคำขอการตรวจสอบสิทธิ์กับโปรเจ็กต์ของคุณ
เพื่อบรรเทาความเป็นไปได้ที่บางคนอาจใช้คีย์ API ในทางที่ผิดเพื่อพยายามโจมตีแบบ Brute Force คุณสามารถกระชับโควต้าเริ่มต้นของตำแหน่ง 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 ให้เลือก จำกัดคีย์ จากนั้นเพิ่ม 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 ให้เลือก จำกัดคีย์ จากนั้นเพิ่ม เฉพาะ
Super Service API
ลงในรายการคีย์ API ใหม่นี้ให้สิทธิ์การเข้าถึง
Super Service API
เท่านั้นกำหนดค่าแอปและบริการของคุณเพื่อใช้คีย์ API ใหม่
ใช้คีย์ API เฉพาะสภาพแวดล้อม (แนะนำ)
หากคุณตั้งค่าโปรเจ็กต์ Firebase ที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน เช่น การจัดเตรียมและการใช้งานจริง สิ่งสำคัญคือแต่ละอินสแตนซ์ของแอปจะต้องโต้ตอบกับโปรเจ็กต์ Firebase ที่เกี่ยวข้อง ตัวอย่างเช่น อินสแตนซ์แอปชั่วคราวของคุณไม่ควรสื่อสารกับโปรเจ็กต์ Firebase ที่ใช้งานจริงของคุณ นอกจากนี้ยังหมายความว่าแอปชั่วคราวของคุณจำเป็นต้องใช้คีย์ API ที่เชื่อมโยงกับโปรเจ็กต์ 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 ของคุณ ( ค้นหารหัสแอปของคุณ )
- PLATFORM (หนึ่งใน):
ในการกำหนดค่า Firebase ที่พิมพ์ออกมาของแอป ให้ค้นหาคีย์ API:
Apple : ค้นหาฟิลด์
API_KEY
Android : ค้นหาการกำหนดค่าสำหรับแอปที่สนใจ (มองหาชื่อแพ็คเกจ) จากนั้นค้นหาฟิลด์
current_key
เว็บ : ค้นหาช่อง
apiKey
ส่วนที่เหลือ API
รับ
apiKeyId
(UID) ของคีย์ API โดยการเรียกตำแหน่งข้อมูลที่เกี่ยวข้องสำหรับแอปที่สนใจ จากนั้นส่งค่าapiKeyId
ไปยังขั้นตอนถัดไป- Apple : โทรไป
projects.iosApps.get
- Android : โทรไป
projects.androidApps.get
- เว็บ : โทร
projects.webApps.get
- Apple : โทรไป
รับสตริงคีย์ API โดยการเรียก
projects.locations.keys.getKeyString
keyString
นี้เป็นค่าเดียวกับที่พบในส่วนกำหนดค่าของแอป ( Apple | Android | Web )
แอป Firebase Apple — แต่ละแอปมีไฟล์กำหนดค่าของตัวเองและสามารถมีคีย์ API ได้เพียงรายการเดียวเท่านั้น
แอป Android ของ Firebase — แอป Android ทั้งหมดในโครงการ Firebase จะแสดงอยู่ในไฟล์กำหนดค่าเดียวกัน และ แต่ละ แอปสามารถมีคีย์ API ที่แสดงได้เพียงรายการเดียวเท่านั้น แต่ละแอปในไฟล์กำหนดค่านี้สามารถมีคีย์ที่แตกต่างกันได้
Firebase Web Apps — แต่ละแอปมีออบเจ็กต์การกำหนดค่าของตัวเองและสามารถมีคีย์ API ได้เพียงคีย์เดียวเท่านั้น
คุณ สามารถ ใช้คีย์ API หลายคีย์กับแอปเดียวได้ คุณต้องจัดเตรียมกลไกสำหรับแอปของคุณเพื่อเข้าถึงคีย์ API อื่นๆ เหล่านี้ เช่น ผ่านตัวแปรสภาพแวดล้อม กลไกในการเข้าถึงคีย์ API อื่นๆ ไม่สามารถขึ้นอยู่กับคีย์ API เหล่านั้นที่แสดงอยู่ในไฟล์/อ็อบเจ็กต์การกำหนดค่า Firebase ของคุณ
เมื่อคุณ ได้รับไฟล์/ออบเจ็กต์การกำหนดค่า Firebase ของแอป เป็นครั้งแรก Firebase จะตรวจสอบว่ามีคีย์ API ที่มีอยู่ในโปรเจ็กต์ของคุณที่มี "ข้อจำกัดของแอปพลิเคชัน" ที่ตรงกับแอปหรือไม่ (เช่น ID บันเดิลที่ตรงกันสำหรับแอป Apple)
หาก Firebase ไม่พบคีย์ที่ถูกจำกัดที่ตรงกัน มันจะแสดงรายการในไฟล์กำหนดค่า/ออบเจ็กต์ iOS key
สำหรับแอป Apple, Android key
สำหรับแอป Android และ Browser key
สำหรับเว็บแอป (สมมติว่ามีคีย์เหล่านี้อยู่และ ไม่มี "ข้อจำกัดของแอปพลิเคชัน" ที่ทำให้ไม่สามารถจับคู่กับแอปนั้นได้)
ใช่ คุณสามารถลบคีย์ API ของคุณออกจากไฟล์กำหนดค่า/อ็อบเจ็กต์ของคุณได้ด้วยตนเอง อย่างไรก็ตาม คุณต้องจัดเตรียมกลไกอื่นเพื่อให้แอปของคุณเข้าถึงคีย์ API (เช่น ผ่านตัวแปรสภาพแวดล้อม) มิฉะนั้น การเรียกใช้บริการ Firebase จะล้มเหลว
ได้ คุณสามารถแก้ไขไฟล์/ออบเจ็กต์การกำหนดค่าด้วยตนเองเพื่อเชื่อมโยงคีย์ API อื่นกับแอปได้
โปรดทราบว่าหากคุณ รับไฟล์/ออบเจ็กต์การกำหนดค่าของแอป จากคอนโซลอีกครั้ง ไฟล์/ออบเจ็กต์จะแสดงรายการคีย์ API ที่ Firebase จับคู่กับแอปนั้นโดยอัตโนมัติ เสมอ ดังนั้น คุณจะต้องทำการแก้ไขด้วยตนเองซ้ำตามความจำเป็น
ไม่ คีย์ API จะระบุเฉพาะโปรเจ็กต์เฉพาะเท่านั้น และไม่สามารถย้ายไปยังโปรเจ็กต์อื่นได้
สาเหตุที่พบบ่อยที่สุดบางประการสำหรับคีย์ API ที่ไม่ถูกต้อง:
คีย์ API มี "ข้อจำกัดของคีย์ API" ซึ่งทำให้ไม่สามารถจับคู่กับแอปที่พยายามใช้คีย์ได้ ("ข้อจำกัดของแอปพลิเคชัน") หรือใช้งานไม่ได้กับ API ที่ถูกเรียก ("ข้อจำกัดของ API")
รหัส API ถูกลบออกจากโครงการใน Google Cloud Console
ไม่ได้สร้างคีย์ API สำหรับรหัสโปรเจ็กต์ที่แสดงอยู่ในไฟล์/ออบเจ็กต์การกำหนดค่า Firebase ของแอป
วิธีหนึ่งในการแก้ไขปัญหานี้คือ การขอรับไฟล์/วัตถุการกำหนดค่า Firebase ของแอปเวอร์ชันที่อัปเดต จาก นั้น แทนที่ ไฟล์/วัตถุการกำหนดค่าเก่าของคุณด้วยไฟล์/วัตถุที่อัปเดตใหม่ ก่อนที่จะส่งไฟล์กำหนดค่าเพื่อดาวน์โหลดหรือแสดงออบเจ็กต์การกำหนดค่าในคอนโซล Firebase จะตรวจสอบว่าคีย์ API ที่แสดง ตรงกับแอป
คีย์ API ที่เว็บแอปของคุณใช้อาจมี "ข้อจำกัดของ API" อยู่ด้วย ในกรณีนี้ ตรวจสอบให้แน่ใจว่า Firebase Management API อยู่ในรายการ API ที่อนุญาต
หากคุณลบคีย์ API ที่แอปใช้งานอยู่ การเรียก API จากแอปนั้นจะล้มเหลว คุณอาจได้รับรายงาน อีเมล หรือข้อผิดพลาดที่คุณพยายามใช้คีย์ API ที่ไม่ถูกต้อง
การลบคีย์ API มีผลถาวรและไม่สามารถยกเลิกได้