Android'de hata ayıklama sağlayıcıyla Uygulama Kontrolü'nü kullanma

App Check bir arka uç hizmeti için zorunlu kılındıktan sonra, bu arka uç hizmetine bağlı olan uygulama özellikleriniz, geçerli cihaz olarak kabul edilmedikleri için bir emülatörde veya sürekli entegrasyon (CI) ortamında çalışmaz. Geliştirme ve test sırasında uygulamanızı bu ortamlarda çalıştırmak için uygulamanızın üretim tasdik sağlayıcısı yerine App Check hata ayıklama sağlayıcısını kullanan bir hata ayıklama derlemesini oluşturmanız gerekir.

Hata ayıklama sağlayıcıyı emülatörde kullanma

Uygulamanızı bir emülatörde etkileşimli olarak (ör. yerel geliştirme sırasında) çalıştırırken hata ayıklama sağlayıcısını kullanma adımları şunlardır:

  1. Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), Android için App Check kitaplığının bağımlılığını ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM kullanmanızı öneririz.

    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 kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.

    (Alternatif)  BoM kullanmadan Firebase kitaplığı bağımlılıklarını ekleyin.

    Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM kullanmanızı önemle tavsiye ederiz. Bu sayede tüm sürümlerin uyumlu olması sağlanır.

    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. Hata ayıklama derlemenizde, App Check öğesini hata ayıklama sağlayıcı fabrikasını kullanacak şekilde yapılandırın:

    Kotlin

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Hata ayıklama jetonunuzu alın:

    1. Uygulamanızı emülatörde veya test cihazınızda çalıştırın.

    2. Günlüklerinizde App Check hata ayıklama jetonunu bulun. Örneğin:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Jetonu kopyalayın (örneğin, 123a4567-b89c-12d3-e456-789012345678).

  4. Hata ayıklama jetonunuzu App Check ile kaydedin:

    1. Firebase konsolunda Güvenlik > Uygulama Kontrolü > Uygulamalar sekmesine gidin.

    2. Uygulamanızı bulun, üç nokta taşma menüsünü () tıklayın ve Hata ayıklama jetonlarını yönet'i seçin.

    3. Hata ayıklama jetonunuzu kaydetmek için ekrandaki talimatları uygulayın.

    Firebase konsolundaki Hata Ayıklama Jetonlarını Yönet menü öğesinin ekran görüntüsü

Jetonu App Check ile kaydettikten sonra arka uç hizmetleriniz bunu geçerli olarak kabul eder.

Bu jeton, geçerli bir cihaz olmadan arka uç hizmetlerinize erişmenizi sağlar. Bu nedenle, jetonunuzu gizli tutmanız çok önemlidir. Bu jetonu herkese açık bir depoya işlemeyin veya uygulamanızın üretim derlemelerinde göndermeyin. Kayıtlı bir jetonun güvenliği ihlal edilirse Firebase konsolundaki Hata ayıklama jetonlarını yönet seçeneğini kullanarak jetonu hemen silin.

CI ortamında birim testi için hata ayıklama sağlayıcısını kullanma

Sürekli entegrasyon (CI) ortamında birim testi için hata ayıklama sağlayıcısını kullanma adımları:

  1. Firebase konsolunda bir hata ayıklama jetonu oluşturun:

    1. Firebase konsolunda Güvenlik > Uygulama Kontrolü > Uygulamalar sekmesine gidin.

    2. Uygulamanızı bulun, üç nokta taşma menüsünü () tıklayın ve Hata ayıklama jetonlarını yönet'i seçin.

    3. Yeni bir hata ayıklama jetonu oluşturmak için ekrandaki talimatları uygulayın.

    Bu jeton, geçerli bir cihaz olmadan arka uç hizmetlerinize erişmenizi sağlar. Bu nedenle, jetonunuzu gizli tutmanız çok önemlidir. Bu jetonu herkese açık bir depoya işlemeyin veya uygulamanızın üretim derlemelerinde göndermeyin. Kayıtlı bir jetonun güvenliği ihlal edilirse Firebase konsolundaki Hata ayıklama jetonlarını yönet seçeneğini kullanarak jetonu hemen silin.

    Hata ayıklama jetonlarını yönet menü öğesinin ekran görüntüsü

  2. Yeni oluşturduğunuz hata ayıklama jetonunu CI sisteminizin güvenli anahtar deposuna ekleyin (ör. GitHub Actions'ın şifrelenmiş sırları veya Travis CI'ın şifrelenmiş değişkenleri).

  3. Gerekirse hata ayıklama jetonunuzu CI ortamında ortam değişkeni olarak kullanılabilir hale getirmek için CI sisteminizi yapılandırın. Değişkeni APP_CHECK_DEBUG_TOKEN_FROM_CI gibi bir adla adlandırın.

  4. Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), Android için App Check kitaplığının bağımlılığını ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM kullanmanızı öneririz.

    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 kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.

    (Alternatif)  BoM kullanmadan Firebase kitaplığı bağımlılıklarını ekleyin.

    Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM kullanmanızı önemle tavsiye ederiz. Bu sayede tüm sürümlerin uyumlu olması sağlanır.

    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 kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.

    (Alternatif)  BoM kullanmadan Firebase kitaplığı bağımlılıklarını ekleyin.

    Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM kullanmanızı önemle tavsiye ederiz. Bu sayede tüm sürümlerin uyumlu olması sağlanır.

    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 derleme değişkeninizin yapılandırmasına aşağıdakileri ekleyin:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. Test sınıflarınızda, App Check jetonu gerektiren tüm kodları sarmak için DebugAppCheckTestHelper kullanın:

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

Uygulamanız bir CI ortamında çalışırken arka uç hizmetleriniz, gönderdiği jetonu geçerli olarak kabul eder.