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

אם אחרי שרשמתם את האפליקציה שלכם ל-App Check, אתם רוצים להריץ אותה בסביבה ש-App Check בדרך כלל לא מסווגת כסביבה תקפה, כמו אמולטור במהלך פיתוח, או מסביבת שילוב רציף (CI), אתם יכולים ליצור גרסת ניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים של 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:34.0.0"))
    
        // 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:19.0.0")
    }

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

    Kotlin

    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 (ניהול אסימוני ניפוי באגים) בתפריט

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

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

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

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

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

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

    צילום מסך של הפריט Manage Debug Tokens (ניהול אסימוני ניפוי באגים) בתפריט

  2. מוסיפים את אסימון הניפוי הבאגים שיצרתם למאגר המפתחות המאובטח של מערכת ה-CI (לדוגמה, encrypted secrets ב-GitHub Actions או encrypted variables ב-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

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

    (חלופה)  מוסיפים תלויות של ספריות 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:19.0.0")
    }

    Java

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

    (חלופה)  מוסיפים תלויות של ספריות 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:19.0.0")
    }

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

    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, שירותי ה-Backend של Firebase יקבלו את האסימון שהיא שולחת כחוקי.