欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

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

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

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

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

  1. در فایل Gradle ماژول (سطح برنامه) خود (معمولا app/build.gradle )، وابستگی را برای کتابخانه Android App Check اعلام کنید:

    Java

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.0.2'
    }
    

    Kotlin+KTX

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.0.2'
    }
    
  2. در ساخت اشکال‌زدایی، App Check را برای استفاده از کارخانه ارائه‌دهنده اشکال‌زدایی پیکربندی کنید:

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());

    Kotlin+KTX

    FirebaseApp.initializeApp(/*context=*/this)
    val 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. در بخش بررسی برنامه کنسول Firebase، مدیریت نشانه‌های اشکال زدایی را از منوی سرریز برنامه خود انتخاب کنید. سپس، رمز اشکال زدایی را که در مرحله قبل وارد کرده اید، ثبت کنید.

    اسکرین شات آیتم منوی Manage Debug Tokens

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

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

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

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

  1. در بخش بررسی برنامه کنسول Firebase، مدیریت نشانه‌های اشکال زدایی را از منوی سرریز برنامه خود انتخاب کنید. سپس، یک نشانه اشکال زدایی جدید ایجاد کنید. در مرحله بعدی به نشانه نیاز دارید.

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

    اسکرین شات آیتم منوی Manage Debug Tokens

  2. نشانه اشکال زدایی را که به تازگی ایجاد کرده اید به فروشگاه کلید ایمن سیستم CI خود اضافه کنید (به عنوان مثال، اسرار رمزگذاری شده GitHub Actions یا متغیرهای رمزگذاری شده Travis CI).

  3. در صورت لزوم، سیستم CI خود را به گونه ای پیکربندی کنید که رمز اشکال زدایی خود را در محیط CI به عنوان یک متغیر محیطی در دسترس قرار دهد. نام متغیر را چیزی مانند APP_CHECK_DEBUG_TOKEN_FROM_CI .

  4. در فایل Gradle ماژول (سطح برنامه) شما (معمولا app/build.gradle ):

    1. وابستگی آزمایشی را برای کتابخانه اشکال‌زدایی App Check Android اعلام کنید:

      Java

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.2'
      }
      

      Kotlin+KTX

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.2'
      }
      
    2. موارد زیر را به پیکربندی نوع ساخت CI خود اضافه کنید:

      testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
      
  5. در کلاس‌های آزمایشی خود، از DebugAppCheckTestHelper برای بسته‌بندی هر کدی که به کد App Check نیاز دارد استفاده کنید:

    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.
                    });
        }
    }
    

    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.
            }
        }
    }
    

وقتی برنامه شما در یک محیط CI اجرا می‌شود، سرویس‌های باطن Firebase رمز ارسالی را معتبر می‌پذیرند.