از App Check با ارائه دهنده اشکال زدایی در Android استفاده کنید

پس از اینکه App Check برای یک سرویس backend اجرا شد، ویژگی‌های برنامه شما که به آن سرویس backend وابسته هستند، در یک شبیه‌ساز یا از یک محیط یکپارچه‌سازی مداوم (CI) اجرا نمی‌شوند، زیرا این محیط‌ها به عنوان دستگاه‌های معتبر واجد شرایط نیستند. برای اجرای برنامه خود در این محیط‌ها در طول توسعه و آزمایش، باید یک نسخه اشکال‌زدایی از برنامه خود ایجاد کنید که از ارائه‌دهنده اشکال‌زدایی App Check به جای ارائه‌دهنده گواهی تولید استفاده می‌کند.

از ارائه دهنده اشکال زدایی در یک شبیه ساز استفاده کنید

در اینجا نحوه استفاده از ارائه دهنده اشکال زدایی هنگام اجرای برنامه خود در یک شبیه ساز به صورت تعاملی (به عنوان مثال، در طول توسعه محلی) آورده شده است:

  1. در فایل Gradle ماژول (سطح برنامه) خود (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradle )، وابستگی مربوط به کتابخانه App Check برای اندروید را اضافه کنید. توصیه می‌کنیم از Firebase Android BoM برای کنترل نسخه‌بندی کتابخانه استفاده کنید.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.16.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 استفاده خواهد کرد.

    (جایگزین) اضافه کردن وابستگی‌های کتابخانه 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.3.0")
    }

  2. در نسخه اشکال‌زدایی (debug build)، App Check طوری پیکربندی کنید که از debug provider 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. توکن اشکال‌زدایی خود را دریافت کنید:

    1. برنامه خود را در شبیه‌ساز یا روی دستگاه آزمایشی خود اجرا کنید.

    2. در لاگ‌های خود به دنبال توکن اشکال‌زدایی App Check بگردید. برای مثال:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. توکن را کپی کنید (برای مثال، 123a4567-b89c-12d3-e456-789012345678 ).

  4. توکن اشکال‌زدایی خود را با App Check ثبت کنید:

    1. در کنسول Firebase ، به تب Security > App Check > Apps بروید.

    2. برنامه‌ی خود را پیدا کنید، روی منوی سه‌نقطه‌ای ( ) کلیک کنید و سپس مدیریت توکن‌های اشکال‌زدایی (Manage debug tokens ) را انتخاب کنید.

    3. برای ثبت توکن اشکال‌زدایی خود، دستورالعمل‌های روی صفحه را دنبال کنید.

    تصویری از آیتم منوی مدیریت توکن‌های اشکال‌زدایی در کنسول فایربیس

پس از ثبت توکن در App Check ، سرویس‌های بک‌اند شما آن را به عنوان معتبر می‌پذیرند.

این توکن امکان دسترسی به سرویس‌های backend شما را بدون نیاز به دستگاه معتبر فراهم می‌کند، بنابراین بسیار مهم است که آن را خصوصی نگه دارید. آن را در یک مخزن عمومی قرار ندهید یا در نسخه‌های تولیدی برنامه خود ارسال نکنید. اگر یک توکن ثبت شده به خطر افتاد، فوراً آن را با استفاده از Manage debug tokens در کنسول Firebase حذف کنید.

استفاده از ارائه‌دهنده‌ی اشکال‌زدایی برای تست واحد در محیط CI

در اینجا نحوه استفاده از ارائه دهنده اشکال زدایی برای تست واحد در یک محیط ادغام مداوم (CI) آورده شده است:

  1. در کنسول Firebase ، یک توکن اشکال‌زدایی ایجاد کنید:

    1. در کنسول Firebase ، به تب Security > App Check > Apps بروید.

    2. برنامه‌ی خود را پیدا کنید، روی منوی سه‌نقطه‌ای ( ) کلیک کنید و سپس مدیریت توکن‌های اشکال‌زدایی (Manage debug tokens ) را انتخاب کنید.

    3. برای ایجاد یک نشانه اشکال‌زدایی جدید، دستورالعمل‌های روی صفحه را دنبال کنید.

    این توکن امکان دسترسی به سرویس‌های backend شما را بدون نیاز به دستگاه معتبر فراهم می‌کند، بنابراین بسیار مهم است که آن را خصوصی نگه دارید. آن را در یک مخزن عمومی قرار ندهید یا در نسخه‌های تولیدی برنامه خود ارسال نکنید. اگر یک توکن ثبت شده به خطر افتاد، فوراً آن را با استفاده از Manage debug tokens در کنسول Firebase حذف کنید.

    تصویر از آیتم منوی مدیریت توکن‌های اشکال‌زدایی

  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 برای اندروید را اضافه کنید. توصیه می‌کنیم از Firebase Android BoM برای کنترل نسخه‌بندی کتابخانه استفاده کنید.

    Kotlin

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.16.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 استفاده خواهد کرد.

    (جایگزین) اضافه کردن وابستگی‌های کتابخانه 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.3.0")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.16.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 استفاده خواهد کرد.

    (جایگزین) اضافه کردن وابستگی‌های کتابخانه 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.3.0")
    }

  5. موارد زیر را به پیکربندی نسخه ساخت CI خود اضافه کنید:

    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 شما توکنی را که ارسال می‌کند به عنوان توکن معتبر می‌پذیرند.