Catch up on everthing we announced at this year's Firebase Summit. Learn more

ปกป้องข้อมูลรับรองระบบคลาวด์ของแอป Firebase ML Android ของคุณ

หากแอป Android ของคุณใช้ API ของระบบคลาวด์ของ Firebase ML ก่อนที่คุณจะเปิดใช้แอปในเวอร์ชันที่ใช้งานจริง คุณควรทำตามขั้นตอนเพิ่มเติมเพื่อป้องกันการเข้าถึง API โดยไม่ได้รับอนุญาต

สำหรับแอปที่ใช้งานจริง คุณจะต้องแน่ใจว่ามีเพียงไคลเอ็นต์ที่ตรวจสอบสิทธิ์เท่านั้นที่เข้าถึงบริการคลาวด์ได้ (โปรดทราบว่ามีเพียงอุปกรณ์ที่ไม่ได้รูทเท่านั้นที่สามารถรับรองความถูกต้องโดยใช้วิธีการที่อธิบายไว้)

จากนั้น คุณจะต้องสร้างคีย์ API สำหรับดีบักเท่านั้น ซึ่งคุณสามารถใช้เพื่อความสะดวกระหว่างการทดสอบและการพัฒนา

1. ลงทะเบียนแอปการผลิตของคุณด้วย Firebase

ขั้นแรก ลงทะเบียนแอปที่ใช้งานจริงกับ Firebase

  1. ตรวจสอบให้แน่ใจว่าคุณมีลายเซ็น SHA-1 ของแอป อ้างถึง การตรวจสอบสิทธิ์ของลูกค้า ที่จะเรียนรู้วิธีการ

  2. ไปที่ การตั้งค่าโครงการใน Firebase คอนโซลแล้วเลือกแท็บ Settings

  3. เลื่อนลงไปที่บัตรปพลิเคชันของคุณแล้วเลือกแอป Android

  4. เพิ่มลายเซ็น SHA-1 ของแอปลงในข้อมูลแอป

2. จำกัดขอบเขตของคีย์ API ของคุณ

ถัดไป กำหนดค่าคีย์ API ที่มีอยู่ของคุณเพื่อไม่อนุญาตให้เข้าถึง Cloud Vision API:

  1. เปิด ข้อมูลประจำตัว หน้าของคอนโซลระบบคลาวด์ของ Google เมื่อได้รับแจ้ง ให้เลือกโครงการของคุณ

  2. สำหรับแต่ละคีย์ API ที่มีอยู่ในรายการ ให้เปิดมุมมองการแก้ไข

  3. ในส่วนข้อ จำกัด ของ API เลือกคีย์ จำกัด แล้วเพิ่มไปยังรายการทั้งหมดของ API ที่คุณต้องการคีย์ API ที่จะมีการเข้าถึง ให้แน่ใจว่าจะไม่รวมถึงวิสัยทัศน์ Cloud API

    เมื่อคุณกำหนดข้อ จำกัด API คีย์ API ของคุณจะประกาศอย่างชัดเจนว่า APIs ที่สำคัญที่มีการเข้าถึง โดยค่าเริ่มต้นเมื่อส่วนข้อ จำกัด API ได้ไม่ จำกัด ที่สำคัญเลือกคีย์ API สามารถนำมาใช้ในการเข้าถึง API ใด ๆ ที่ถูกเปิดใช้งานสำหรับโครงการ

ตอนนี้คีย์ API ที่มีอยู่ของคุณจะไม่ให้สิทธิ์การเข้าถึงบริการคลาวด์ ML แต่ที่สำคัญแต่ละคนจะยังคงทำงานสำหรับ API ใด ๆ ที่คุณเพิ่มเข้าไปในรายการข้อ จำกัด ของ API

โปรดทราบว่าถ้าคุณเปิดใช้งาน API การเพิ่มเติมใด ๆ ในอนาคตคุณจะต้องเพิ่มเข้าไปในรายการข้อ จำกัด API สำหรับคีย์ API บังคับ

3. สร้างและใช้คีย์ API สำหรับดีบักเท่านั้น

สุดท้าย สร้างคีย์ API ใหม่เพื่อใช้ในการพัฒนาเท่านั้น Firebase ML สามารถใช้คีย์ API นี้เพื่อเข้าถึงบริการ Google Cloud ในสภาพแวดล้อมที่ไม่สามารถตรวจสอบสิทธิ์แอปได้ เช่น เมื่อทำงานบนโปรแกรมจำลอง

  1. สร้างคีย์ API ใหม่เพื่อใช้ในการพัฒนา:

    1. เปิด ข้อมูลประจำตัว หน้าของคอนโซลระบบคลาวด์ของ Google เมื่อได้รับแจ้ง ให้เลือกโครงการของคุณ

    2. คลิกสร้างข้อมูลประจำตัว> คีย์ API และรับทราบของคีย์ API ใหม่ ที่สำคัญนี้จะช่วยให้การเข้าถึง API จากปพลิเคชันที่ไม่ได้รับเพื่อให้คีย์นี้เป็นความลับ

  2. เพื่อให้แน่ใจว่าคีย์ API การดีบักใหม่จะไม่รั่วไหลไปกับแอปที่คุณเผยแพร่ ให้ระบุคีย์ API การดีบักในไฟล์รายการ Android ที่ใช้สำหรับบิลด์การดีบักเท่านั้น:

    1. หากคุณไม่ได้มีการแก้ปัญหาที่ประจักษ์สร้างโดยคลิก File> New> อื่น ๆ > Android Manifest ไฟล์และเลือก debug จากชุดแหล่งเป้าหมาย

    2. ในรายการดีบัก เพิ่มการประกาศต่อไปนี้:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. ในแอปของคุณ กำหนดค่า Firebase ML เพื่อใช้การจับคู่ลายนิ้วมือของใบรับรองเพื่อตรวจสอบสิทธิ์ไคลเอ็นต์ของคุณในการผลิตและใช้คีย์ API ซึ่งเป็นคีย์ดีบั๊ก เฉพาะในบิลด์การดีบักเท่านั้น:

    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);

    คอตลิน+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)

ขั้นตอนถัดไป

ดู รายการตรวจสอบการเปิดตัว สำหรับข้อมูลเกี่ยวกับการเตรียมความพร้อมของแอปจะเปิดตัวเมื่อใช้คุณลักษณะ Firebase อื่น ๆ