หากแอป Android ใช้ Cloud API ของ Firebase ML ก่อนเปิดตัวแอปเวอร์ชันที่ใช้งานจริง คุณควรทำตามขั้นตอนเพิ่มเติมเพื่อป้องกันการเข้าถึง API ที่ไม่ได้รับอนุญาต
สําหรับแอปเวอร์ชันที่ใช้งานจริง คุณต้องตรวจสอบว่าเฉพาะไคลเอ็นต์ที่ตรวจสอบสิทธิ์แล้วเท่านั้นที่จะเข้าถึงบริการระบบคลาวด์ได้ (โปรดทราบว่ามีเพียงอุปกรณ์ที่ไม่ได้รูทเท่านั้นที่จะตรวจสอบสิทธิ์ได้โดยใช้วิธีการที่อธิบายไว้)
จากนั้นคุณจะสร้างคีย์ API สำหรับการแก้ไขข้อบกพร่องเท่านั้นซึ่งใช้เพื่อความสะดวกในระหว่างการทดสอบและการพัฒนาได้
1. ลงทะเบียนแอปเวอร์ชันที่ใช้งานจริงกับ Firebase
ขั้นแรก ให้ลงทะเบียนแอปเวอร์ชันที่ใช้งานจริงกับ Firebase
ตรวจสอบว่าคุณมีลายเซ็น SHA-1 ของแอป โปรดดูวิธีตรวจสอบสิทธิ์ลูกค้า
ไปที่ Firebase แล้วเลือกแท็บการตั้งค่า
การตั้งค่าโปรเจ็กต์ในคอนโซลเลื่อนลงไปที่การ์ดแอปของคุณ แล้วเลือกแอป Android
เพิ่มลายเซ็น SHA-1 ของแอปลงในข้อมูลของแอป
2. จำกัดขอบเขตของคีย์ API
ถัดไป ให้กำหนดค่าคีย์ API ที่มีอยู่เพื่อไม่ให้สิทธิ์การเข้าถึง Cloud Vision API ด้วยคำสั่งต่อไปนี้
เปิดหน้าข้อมูลเข้าสู่ระบบของคอนโซล Google Cloud เลือกโปรเจ็กต์เมื่อได้รับข้อความแจ้ง
เปิดมุมมองการแก้ไขสำหรับคีย์ API ที่มีอยู่แต่ละรายการในรายการ
ในส่วนการจํากัด API ให้เลือกจํากัดคีย์ จากนั้นเพิ่ม API ทั้งหมดที่คุณต้องการให้คีย์ API มีสิทธิ์เข้าถึงลงในรายการ ตรวจสอบว่าไม่ได้รวม Cloud Vision API
เมื่อกำหนดค่าข้อจำกัด API ของคีย์ API แสดงว่าคุณได้ประกาศ API ที่คีย์มีสิทธิ์เข้าถึงอย่างชัดเจน โดยค่าเริ่มต้น เมื่อเลือกข้อจำกัด API ในส่วนข้อจำกัดเป็นไม่จำกัดคีย์ ระบบจะใช้คีย์ API เพื่อเข้าถึง API ที่เปิดใช้สำหรับโปรเจ็กต์ได้
ตอนนี้คีย์ API ที่มีอยู่จะไม่ให้สิทธิ์เข้าถึงบริการ ML บนระบบคลาวด์ แต่คีย์แต่ละรายการจะยังคงใช้งานได้กับ API ที่คุณเพิ่มลงในรายการข้อจํากัด API
โปรดทราบว่าหากเปิดใช้ API เพิ่มเติมในอนาคต คุณต้องเพิ่ม API เหล่านั้นลงในรายการข้อจํากัดของ API สําหรับคีย์ API ที่เกี่ยวข้อง
3. สร้างและใช้คีย์ API สำหรับการแก้ไขข้อบกพร่องเท่านั้น
สุดท้าย ให้สร้างคีย์ API ใหม่เพื่อใช้สำหรับการพัฒนาเท่านั้น Firebase ML สามารถใช้คีย์ API นี้เพื่อเข้าถึงบริการ Google Cloud ในสภาพแวดล้อมที่ไม่สามารถตรวจสอบสิทธิ์แอปได้ เช่น เมื่อใช้งานบนโปรแกรมจำลอง
สร้างคีย์ API ใหม่เพื่อใช้สำหรับการพัฒนา
เปิดหน้าข้อมูลเข้าสู่ระบบของคอนโซล Google Cloud เลือกโปรเจ็กต์เมื่อได้รับข้อความแจ้ง
คลิกสร้างข้อมูลเข้าสู่ระบบ > คีย์ API แล้วจดบันทึกคีย์ API ใหม่ คีย์นี้อนุญาตให้เข้าถึง API จากแอปที่ไม่ได้ตรวจสอบสิทธิ์ ดังนั้นโปรดเก็บคีย์นี้ไว้เป็นความลับ
โปรดระบุคีย์ API การแก้ไขข้อบกพร่องในไฟล์ Manifest ของ Android ที่ใช้สำหรับบิลด์การแก้ไขข้อบกพร่องเท่านั้น เพื่อให้มั่นใจว่าคีย์ API การแก้ไขข้อบกพร่องใหม่จะไม่รั่วไหลไปกับแอปที่เผยแพร่
หากยังไม่มีไฟล์ Manifest สำหรับการแก้ไขข้อบกพร่อง ให้สร้างโดยคลิกไฟล์ > ใหม่ > อื่นๆ > ไฟล์ Manifest ของ Android แล้วเลือก
debug
จากชุดแหล่งที่มาเป้าหมายในไฟล์ Manifest สำหรับการแก้ไขข้อบกพร่อง ให้เพิ่มการประกาศต่อไปนี้
<application> <meta-data android:name="com.firebase.ml.cloud.ApiKeyForDebug" android:value="your-debug-api-key" /> </application>
ในแอป ให้กําหนดค่า Firebase ML ให้ใช้การจับคู่ลายนิ้วมือของใบรับรองเพื่อตรวจสอบสิทธิ์ไคลเอ็นต์ในเวอร์ชันที่ใช้งานจริง และใช้คีย์ API (คีย์แก้ไขข้อบกพร่อง) ในบิลด์แก้ไขข้อบกพร่องเท่านั้น โดยทําดังนี้
Kotlin+KTX
val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder() if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch() } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f) // ... // And lastly: val options = optionsBuilder.build() FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
Java
FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder = new FirebaseVisionCloudImageLabelerOptions.Builder(); if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch(); } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f); // ... // And lastly: FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build(); FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
ขั้นตอนถัดไป
ดูข้อมูลเกี่ยวกับการเตรียมแอปให้พร้อมเปิดตัวเมื่อใช้ฟีเจอร์อื่นๆ ของ Firebase ได้ในรายการตรวจสอบการเปิดตัว