หากหลังจากลงทะเบียนแอปสำหรับ App Check แล้ว คุณต้องการเปิดใช้แอปในสภาพแวดล้อมที่ปกติแล้ว App Check จะไม่จัดว่าถูกต้อง เช่น โปรแกรมจำลองระหว่างการพัฒนา หรือจากสภาพแวดล้อมการผสานรวมอย่างต่อเนื่อง (CI) คุณสามารถ สร้างบิลด์แก้ไขข้อบกพร่องของแอปที่ใช้ผู้ให้บริการตรวจแก้จุดบกพร่อง App Check แทนผู้ให้บริการรับรองจริง
ใช้ผู้ให้บริการดีบักในโปรแกรมจำลอง
หากต้องการใช้ตัวให้บริการแก้ไขจุดบกพร่องขณะเรียกใช้แอปของคุณในโปรแกรมจำลองแบบโต้ตอบ (เช่น ระหว่างการพัฒนา) ให้ทำดังต่อไปนี้:
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
app/build.gradle
) ให้ประกาศการพึ่งพาสำหรับไลบรารี App Check Android:Kotlin+KTX
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug:17.0.1' }
Java
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug:17.0.1' }
ในบิลด์การแก้ไขข้อบกพร่อง ให้กำหนดค่า App Check เพื่อใช้โรงงานผู้ให้บริการแก้ไขข้อบกพร่อง:
Kotlin+KTX
Firebase.initialize(context = this) val firebaseAppCheck = FirebaseAppCheck.getInstance() firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), )
Java
FirebaseApp.initializeApp(/*context=*/ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance());
เปิดแอปและเริ่มการโทรไปยังบริการแบ็กเอนด์ของ Firebase โทเค็นดีบักในเครื่องจะถูกบันทึกเมื่อ SDK พยายามส่งคำขอไปยังแบ็กเอนด์ ตัวอย่างเช่น:
D DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
ในส่วน การตรวจสอบแอป ของคอนโซล Firebase ให้เลือก จัดการโทเค็นการแก้ไขจุดบกพร่อง จากเมนูรายการเพิ่มเติมของแอป จากนั้น ลงทะเบียนโทเค็นการแก้ปัญหาที่คุณเข้าสู่ระบบในขั้นตอนก่อนหน้า
หลังจากที่คุณลงทะเบียนโทเค็นแล้ว บริการแบ็กเอนด์ของ Firebase จะยอมรับว่าโทเค็นนั้นถูกต้อง
เนื่องจากโทเค็นนี้อนุญาตให้เข้าถึงทรัพยากร Firebase ของคุณโดยไม่ต้องใช้อุปกรณ์ที่ถูกต้อง คุณจึงต้องรักษาความเป็นส่วนตัวไว้ อย่าผูกมัดกับที่เก็บข้อมูลสาธารณะ และหากโทเค็นที่ลงทะเบียนเคยถูกบุกรุก ให้เพิกถอนทันทีในคอนโซล Firebase
ใช้ผู้ให้บริการตรวจแก้จุดบกพร่องสำหรับการทดสอบหน่วยในสภาพแวดล้อม CI
หากต้องการใช้ผู้ให้บริการตรวจแก้จุดบกพร่องสำหรับการทดสอบหน่วยในสภาพแวดล้อมการผสานรวมอย่างต่อเนื่อง (CI) ให้ทำดังต่อไปนี้:
ในส่วน การตรวจสอบแอป ของคอนโซล Firebase ให้เลือก จัดการโทเค็นการแก้ไขจุดบกพร่อง จากเมนูรายการเพิ่มเติมของแอป จากนั้น สร้างโทเค็นการแก้ปัญหาใหม่ คุณจะต้องใช้โทเค็นในขั้นตอนถัดไป
เนื่องจากโทเค็นนี้อนุญาตให้เข้าถึงทรัพยากร Firebase ของคุณโดยไม่ต้องใช้อุปกรณ์ที่ถูกต้อง คุณจึงต้องรักษาความเป็นส่วนตัวไว้ อย่าผูกมัดกับที่เก็บข้อมูลสาธารณะ และหากโทเค็นที่ลงทะเบียนเคยถูกบุกรุก ให้เพิกถอนทันทีในคอนโซล Firebase
เพิ่มโทเค็นการแก้ไขจุดบกพร่องที่คุณเพิ่งสร้างขึ้นไปยังที่เก็บคีย์ที่ปลอดภัยของระบบ CI ของคุณ (เช่น ความลับที่เข้ารหัส ของ GitHub Actions หรือ ตัวแปรที่เข้ารหัส ของ Travis CI)
หากจำเป็น ให้กำหนดค่าระบบ CI ของคุณเพื่อทำให้โทเค็นการแก้ไขจุดบกพร่องของคุณพร้อมใช้งานภายในสภาพแวดล้อม CI เป็นตัวแปรสภาพแวดล้อม ตั้งชื่อตัวแปรว่า
APP_CHECK_DEBUG_TOKEN_FROM_CI
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติ
app/build.gradle
):ประกาศการขึ้นต่อกันของการทดสอบสำหรับไลบรารีการแก้ไขข้อบกพร่องของ App Check Android:
Kotlin+KTX
dependencies { androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:17.0.1' }
Java
dependencies { androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:17.0.1' }
เพิ่มสิ่งต่อไปนี้ในการกำหนดค่าตัวแปรบิลด์ CI ของคุณ:
testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
ในคลาสทดสอบของคุณ ให้ใช้
DebugAppCheckTestHelper
เพื่อรวมโค้ดที่ต้องการโทเค็น App Check:Kotlin+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. } } }
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 บริการแบ็กเอนด์ของ Firebase จะยอมรับโทเค็นที่ส่งมาว่าถูกต้อง