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

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

  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. برنامه را اجرا کنید و یک فراخوانی به سرویس backend فایربیس انجام دهید. وقتی SDK سعی می‌کند درخواستی به backend ارسال کند، یک توکن اشکال‌زدایی محلی ثبت می‌شود. برای مثال:

    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) را انتخاب کنید. سپس، توکن اشکال‌زدایی (debug token) که در مرحله قبل وارد کرده‌اید را ثبت کنید.

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

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

از آنجا که این توکن امکان دسترسی به منابع Firebase شما را بدون دستگاه معتبر فراهم می‌کند، بسیار مهم است که آن را خصوصی نگه دارید. آن را در یک مخزن عمومی ثبت نکنید و اگر یک توکن ثبت شده به خطر افتاد، فوراً آن را در کنسول Firebase لغو کنید.

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

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

  1. در بخش App Check در کنسول Firebase ، از منوی بالای برنامه خود، گزینه مدیریت توکن‌های اشکال‌زدایی (Manage debug tokens) را انتخاب کنید. سپس، یک توکن اشکال‌زدایی جدید ایجاد کنید. در مرحله بعدی به این توکن نیاز خواهید داشت.

    از آنجا که این توکن امکان دسترسی به منابع Firebase شما را بدون دستگاه معتبر فراهم می‌کند، بسیار مهم است که آن را خصوصی نگه دارید. آن را در یک مخزن عمومی ثبت نکنید و اگر یک توکن ثبت شده به خطر افتاد، فوراً آن را در کنسول 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.5.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.0.1")
    }

    Java

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

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