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

ใช้ App Check กับผู้ให้บริการดีบั๊กบน Android

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

ใช้ผู้ให้บริการดีบักในอีมูเลเตอร์

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

  1. ในโมดูลของคุณ (app ระดับ) ไฟล์ Gradle (ปกติ app/build.gradle ) ประกาศพึ่งพาสำหรับ App ตรวจสอบห้องสมุด Android:

    Java

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta03'
    }
    

    คอตลิน+KTX

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta03'
    }
    
  2. ในบิลด์การดีบักของคุณ กำหนดค่า App Check เพื่อใช้โรงงานผู้ให้บริการดีบัก:

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());

    คอตลิน+KTX

    FirebaseApp.initializeApp(/*context=*/this)
    val firebaseAppCheck = FirebaseAppCheck.getInstance()
    firebaseAppCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance()
    )
  3. เปิดแอปและเรียกใช้บริการแบ็กเอนด์ของ Firebase โทเค็นการแก้ไขข้อบกพร่องในเครื่องจะถูกบันทึกเมื่อ SDK พยายามส่งคำขอไปยังแบ็กเอนด์ ตัวอย่างเช่น:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. ในการ ตรวจสอบการตั้งโครงการ> App ส่วนของคอนโซล Firebase เลือกจัดการราชสกุลแก้ปัญหาล้นจากเมนูแอปของคุณ จากนั้นลงทะเบียนโทเค็นการดีบักที่คุณเข้าสู่ระบบในขั้นตอนก่อนหน้า

    สกรีนช็อตของรายการเมนูจัดการโทเค็นดีบัก

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

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

ใช้ผู้ให้บริการดีบักสำหรับการทดสอบหน่วยในสภาพแวดล้อม CI

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

  1. ในการ ตรวจสอบการตั้งโครงการ> App ส่วนของคอนโซล Firebase เลือกจัดการราชสกุลแก้ปัญหาล้นจากเมนูแอปของคุณ จากนั้น สร้างโทเค็นการแก้ไขข้อบกพร่องใหม่ คุณจะต้องใช้โทเค็นในขั้นตอนต่อไป

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

    สกรีนช็อตของรายการเมนูจัดการโทเค็นดีบัก

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

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

  4. ในโมดูลของคุณ (app ระดับ) ไฟล์ Gradle (ปกติ app/build.gradle ):

    1. ประกาศการพึ่งพาการทดสอบสำหรับไลบรารีการดีบัก App Check Android:

      Java

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.0-beta03'
      }
      

      คอตลิน+KTX

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.0-beta03'
      }
      
    2. เพิ่มสิ่งต่อไปนี้ในการกำหนดค่าของตัวแปรบิวด์ CI ของคุณ:

      testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
      
  5. ในการเรียนการทดสอบของคุณใช้ DebugAppCheckTestHelper ห่อรหัสใด ๆ ที่ต้องการ App ตรวจสอบโทเค็น:

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

    คอตลิน+KTX

    @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.
            }
        }
    }
    

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