אחרי שרושמים את האפליקציה ל-App Check רוצים להריץ את האפליקציה בסביבה שבדרך כלל App Check לא מסווגת כחוקית, כמו אמולטור במהלך הפיתוח או מסביבת אינטגרציה רציפה (CI), אפשר ליצור גרסת build לניפוי באגים של האפליקציה שמשתמשת בספק ניפוי הבאגים App Check במקום בספק אימות אמיתי.
שימוש בספק ניפוי הבאגים באמולטור
כדי להשתמש בספק ניפוי הבאגים בזמן שמריצים את האפליקציה באמולטור באופן אינטראקטיבי (למשל במהלך הפיתוח), מבצעים את הפעולות הבאות:
בקובץ 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") }
ב-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());
מפעילים את האפליקציה ומפעילים קריאה לשירות לקצה העורפי של Firebase. אסימון ניפוי באגים מקומי יתועד כשערכת ה-SDK תנסה לשלוח בקשה לקצה העורפי. לדוגמה:
D DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
בקטע App Check במסוף Firebase, בוחרים באפשרות Manage debug tokens בתפריט ההזזה למעלה של האפליקציה. לאחר מכן רושמים את האסימון לניפוי באגים שיצרתם בשלב הקודם.
לאחר רישום האסימון, השירותים לקצה העורפי של Firebase יקבלו אותו כחוקי.
האסימון הזה מאפשר גישה למשאבי Firebase ללא מכשיר תקין, ולכן חשוב לשמור על הפרטיות שלו. אל תיצרו להם גירסאות שמורדות למאגר ציבורי. אם אסימון רשום נפרץ, צריך לבטל אותו באופן מיידי במסוף Firebase.
שימוש בספק ניפוי הבאגים לבדיקת יחידה בסביבת CI
כדי להשתמש בספק ניפוי הבאגים לבדיקת יחידה בסביבה של אינטגרציה רציפה (CI), מבצעים את הפעולות הבאות:
בקטע App Check במסוף Firebase, בוחרים באפשרות Manage debug tokens בתפריט ההזזה למעלה של האפליקציה. לאחר מכן, יוצרים אסימון חדש לניפוי באגים. תצטרכו את הטוקן בשלב הבא.
האסימון הזה מאפשר גישה למשאבים שלכם ב-Firebase ללא מכשיר תקף, ולכן חשוב לשמור על הפרטיות שלו. אסור לשמור אותו למאגר ציבורי. אם אסימון רשום נפרץ, אתם צריכים לבטל אותו מיד במסוף Firebase.
מוסיפים את האסימון לניפוי באגים שיצרתם כרגע למאגר המפתחות המאובטח של מערכת ה-CI (לדוגמה, הסודות המוצפנים של GitHub Actions או המשתנים המוצפנים של Travis CI).
אם צריך, מגדירים את מערכת ה-CI כך שאסימון ניפוי הבאגים יהיה זמין בסביבת ה-CI כמשתנה סביבה. נותנים למשתנה שם כמו
APP_CHECK_DEBUG_TOKEN_FROM_CI
.בקובץ 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") }
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") }
מוסיפים את הפרטים הבאים להגדרות של וריאנט ה-build של ה-CI:
testInstrumentationRunnerArguments["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 יקבלו את האסימון שהוא שולח כתקף.