שימוש ב-App Check עם ספק ניפוי הבאגים ב-Android

אחרי שרושמים את האפליקציה ל-App Check רוצים להריץ את האפליקציה בסביבה שבדרך כלל App Check לא מסווגת כחוקית, כמו אמולטור במהלך הפיתוח או מסביבת אינטגרציה רציפה (CI), אפשר ליצור גרסת build לניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים App Check במקום בספק אימות אמיתי.

שימוש בספק ניפוי הבאגים באמולטור

כדי להשתמש בספק ניפוי הבאגים בזמן שמריצים את האפליקציה באמולטור באופן אינטראקטיבי (למשל במהלך הפיתוח), מבצעים את הפעולות הבאות:

  1. בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle), מוסיפים את התלות לספריית App Check ל-Android. מומלץ להשתמש ב-Firebase Android BoM כדי לשלוט בניהול הגרסאות של הספרייה.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.5.1"))
    
        // 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.

    (חלופה)  מוסיפים יחסי תלות לספריות של Firebase בלי להשתמש ב-BoM

    אם בוחרים שלא להשתמש ברכיב Firebase BoM, צריך לציין כל גרסה של ספריית Firebase בשורת התלות שלה.

    לתשומת ליבך: אם משתמשים באפליקציה שלך באמצעות מספר ספריות של 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:18.0.0")
    }
    מחפשים מודול ספרייה ספציפי ל-Kotlin? החל מ-אוקטובר 2023 (Firebase BoM 32.5.0), מפתחי Kotlin ומפתחי Java יוכלו להסתמך על מודול הספרייה הראשי (פרטים נוספים זמינים בשאלות הנפוצות לגבי היוזמה הזו).

  2. ב-build לצורכי ניפוי באגים, מגדירים את App Check כך שישתמש במפעל של ספק ניפוי הבאגים:

    Kotlin+KTX

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

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck 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 Check במסוף Firebase, בוחרים באפשרות Manage debug tokens בתפריט ההזזה למעלה של האפליקציה. לאחר מכן רושמים את האסימון לניפוי באגים שיצרתם בשלב הקודם.

    צילום מסך של האפשרות &#39;ניהול אסימוני ניפוי באגים&#39; בתפריט

לאחר רישום האסימון, השירותים לקצה העורפי של Firebase יקבלו אותו כחוקי.

האסימון הזה מאפשר גישה למשאבי Firebase ללא מכשיר תקין, ולכן חשוב לשמור על הפרטיות שלו. אל תיצרו להם גירסאות שמורדות למאגר ציבורי. אם אסימון רשום נפרץ, צריך לבטל אותו באופן מיידי במסוף Firebase.

שימוש בספק ניפוי הבאגים לבדיקת יחידה בסביבת CI

כדי להשתמש בספק ניפוי הבאגים לבדיקת יחידה בסביבה של אינטגרציה רציפה (CI), מבצעים את הפעולות הבאות:

  1. בקטע App Check במסוף Firebase, בוחרים באפשרות Manage debug tokens בתפריט ההזזה למעלה של האפליקציה. לאחר מכן, יוצרים אסימון חדש לניפוי באגים. תצטרכו את הטוקן בשלב הבא.

    האסימון הזה מאפשר גישה למשאבים שלכם ב-Firebase ללא מכשיר תקף, ולכן חשוב לשמור על הפרטיות שלו. אסור לשמור אותו למאגר ציבורי. אם אסימון רשום נפרץ, אתם צריכים לבטל אותו מיד במסוף Firebase.

    צילום מסך של האפשרות &#39;ניהול אסימוני ניפוי באגים&#39; בתפריט

  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), מוסיפים את התלות לספריית App Check ל-Android. מומלץ להשתמש ב-Firebase Android BoM כדי לשלוט בניהול הגרסאות של הספרייה.

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.5.1"))
    
        // 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, האפליקציה תמיד תשתמש בגרסאות תואמות של ספריות Android של Firebase.

    (חלופה) מוסיפים יחסי תלות של ספריית Firebase בלי להשתמש ב-BoM

    אם בוחרים שלא להשתמש ברכיב Firebase BoM, צריך לציין כל גרסה של ספריית Firebase בשורת התלות שלה.

    לתשומת ליבך: אם משתמשים באפליקציה שלך באמצעות מספר ספריות של 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:18.0.0")
    }
    מחפשים מודול ספרייה ספציפי ל-Kotlin? החל מ-אוקטובר 2023 (Firebase BoM 32.5.0), מפתחי Kotlin ומפתחי Java יוכלו להסתמך על מודול הספרייה הראשי (פרטים נוספים זמינים בשאלות הנפוצות לגבי היוזמה הזו).

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.5.1"))
    
        // 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, האפליקציה תמיד תשתמש בגרסאות תואמות של ספריות Android של Firebase.

    (חלופה)  מוסיפים יחסי תלות לספריות של Firebase בלי להשתמש ב-BoM

    אם בוחרים שלא להשתמש ברכיב Firebase BoM, צריך לציין כל גרסה של ספריית Firebase בשורת התלות שלה.

    לתשומת ליבך: אם משתמשים באפליקציה שלך באמצעות מספר ספריות של 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:18.0.0")
    }
    מחפשים מודול ספרייה ספציפי ל-Kotlin? החל מ-אוקטובר 2023 (Firebase BoM 32.5.0), מפתחי Kotlin ומפתחי Java יוכלו להסתמך על מודול הספרייה הראשי (פרטים נוספים זמינים בשאלות הנפוצות לגבי היוזמה הזו).

  5. מוסיפים את הפרטים הבאים להגדרות של וריאנט ה-build של ה-CI:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. בכיתות הבדיקה, משתמשים ב-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 יקבלו את האסימון שהוא שולח כתקף.