หากแอป 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 สำหรับการแก้ไขข้อบกพร่องใหม่จะไม่รั่วไหลไปพร้อมกับแอปที่เผยแพร่ ให้ระบุคีย์ API สำหรับการแก้ไขข้อบกพร่องในไฟล์ Manifest ของ Android ที่ใช้เฉพาะสำหรับการสร้าง การแก้ไขข้อบกพร่อง
หากยังไม่มีไฟล์ 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 ซึ่งเป็นคีย์การแก้ไขข้อบกพร่อง เฉพาะในบิลด์การแก้ไขข้อบกพร่องเท่านั้น
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)
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 ได้ในรายการตรวจสอบการเปิดตัว