ใช้ App Check กับผู้ให้บริการแก้ไขข้อบกพร่องใน Android

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

ใช้ผู้ให้บริการแก้ไขข้อบกพร่องในโปรแกรมจำลอง

วิธีใช้ผู้ให้บริการแก้ไขข้อบกพร่องขณะเรียกใช้แอปในโปรแกรมจำลองแบบอินเทอร์แอกทีฟ (เช่น ระหว่างการพัฒนาในเครื่อง) มีดังนี้

  1. ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารี App Check สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารี

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependencies for the App Check libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ

    (ทางเลือก)  เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM

    หากเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันของไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency

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

    dependencies {
        // Add the dependencies for the App Check libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

  2. ในบิลด์การแก้ไขข้อบกพร่อง ให้กำหนดค่า App Check เพื่อใช้โรงงานผู้ให้บริการแก้ไขข้อบกพร่อง ดังนี้

    Kotlin

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. รับโทเค็นการแก้ไขข้อบกพร่องโดยทำดังนี้

    1. เรียกใช้แอปในโปรแกรมจำลองหรือในอุปกรณ์ทดสอบ

    2. มองหาโทเค็นการแก้ไขข้อบกพร่อง App Check ในบันทึก เช่น

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. คัดลอกโทเค็น (เช่น 123a4567-b89c-12d3-e456-789012345678)

  4. ลงทะเบียนโทเค็นการแก้ไขข้อบกพร่องกับ App Check โดยทำดังนี้

    1. ในคอนโซล Firebase ให้ไปที่ความปลอดภัย > App Check > แท็บแอป

    2. ค้นหาแอปของคุณ คลิกเมนูรายการเพิ่มเติม 3 จุด () แล้วเลือกจัดการโทเค็นการแก้ไขข้อบกพร่อง

    3. ทำตามวิธีการบนหน้าจอเพื่อลงทะเบียนโทเค็นการแก้ไขข้อบกพร่อง

    ภาพหน้าจอของรายการเมนู &quot;จัดการโทเค็นการแก้ไขข้อบกพร่อง&quot; ในคอนโซล Firebase

หลังจากลงทะเบียนโทเค็นกับ App Check แล้ว บริการแบ็กเอนด์จะยอมรับโทเค็นดังกล่าวว่าถูกต้อง

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

ใช้ผู้ให้บริการแก้ไขข้อบกพร่องสำหรับการทำ Unit Test ในสภาพแวดล้อม CI

วิธีใช้ผู้ให้บริการแก้ไขข้อบกพร่องสำหรับการทำ Unit Test ในสภาพแวดล้อมการรวมอย่างต่อเนื่อง (CI) มีดังนี้

  1. สร้างโทเค็นการแก้ไขข้อบกพร่องในคอนโซล Firebase โดยทำดังนี้

    1. ในคอนโซล Firebase ให้ไปที่ความปลอดภัย > App Check > แท็บแอป

    2. ค้นหาแอปของคุณ คลิกเมนูรายการเพิ่มเติม 3 จุด () แล้วเลือกจัดการโทเค็นการแก้ไขข้อบกพร่อง

    3. ทำตามวิธีการบนหน้าจอเพื่อสร้างโทเค็นการแก้ไขข้อบกพร่องใหม่

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

    ภาพหน้าจอของรายการเมนู &quot;จัดการโทเค็นการแก้ไขข้อบกพร่อง&quot;

  2. เพิ่มโทเค็นการแก้ไขข้อบกพร่องที่คุณเพิ่งสร้างลงในคีย์สโตร์ที่ปลอดภัยของระบบ CI (เช่น ข้อมูลลับที่เข้ารหัสของ GitHub Actions หรือตัวแปรที่เข้ารหัสของ Travis CI)

  3. หากจำเป็น ให้กำหนดค่าระบบ CI เพื่อให้โทเค็นการแก้ไขข้อบกพร่องพร้อมใช้งานภายในสภาพแวดล้อม CI เป็นตัวแปรสภาพแวดล้อม ตั้งชื่อตัวแปร เช่น APP_CHECK_DEBUG_TOKEN_FROM_CI

  4. ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารี App Check สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารี

    Kotlin

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ

    (ทางเลือก)  เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM

    หากเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันของไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency

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

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }

    การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ

    (ทางเลือก)  เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM

    หากเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันของไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency

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

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
    }

  5. เพิ่มโค้ดต่อไปนี้ลงในการกำหนดค่าตัวแปรบิลด์ CI

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. ในคลาสทดสอบ ให้ใช้ DebugAppCheckTestHelper เพื่อรวมโค้ดที่ต้องใช้โทเค็น App Check

    Kotlin

    @RunWith(AndroidJunit4::class)
    class MyTests {
        private val debugAppCheckTestHelper =
            DebugAppCheckTestHelper.fromInstrumentationArgs()
    
        @Test
        fun testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider {
                // Test code that requires a debug AppCheckToken.
            }
        }
    
        @Test
        fun testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                FirebaseApp.getInstance("nonDefaultApp")
            ) {
                // Test code that requires a debug AppCheckToken.
            }
        }
    }
    

    Java

    @RunWith(AndroidJunit4.class)
    public class YourTests {
        private final DebugAppCheckTestHelper debugAppCheckTestHelper =
                DebugAppCheckTestHelper.fromInstrumentationArgs();
    
        @Test
        public void testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(() -> {
                // Test code that requires a debug AppCheckToken.
            });
        }
    
        @Test
        public void testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                    FirebaseApp.getInstance("nonDefaultApp"),
                    () -> {
                        // Test code that requires a debug AppCheckToken.
                    });
        }
    }
    

เมื่อแอปทำงานในสภาพแวดล้อม CI บริการแบ็กเอนด์จะยอมรับโทเค็นที่แอปส่งมาว่าถูกต้อง