Firebase ML Android uygulamanızın Bulut kimlik bilgilerini koruyun

Android uygulamanız, Firebase ML'nin bulut API'lerinden birini kullanıyorsa uygulamanızı üretimde kullanıma sunmadan önce yetkisiz API erişimini önlemek için bazı ek adımlar atmanız gerekir.

Üretim uygulamalarınız için yalnızca kimliği doğrulanmış istemcilerin bulut hizmetlerine erişebilmesini sağlarsınız. (Yalnızca root bağlantısı olmayan cihazların açıklanan yöntemi kullanarak kimlik doğrulaması yapabildiğini unutmayın.)

Ardından, test ve geliştirme sırasında kolaylık sağlamak için kullanabileceğiniz, yalnızca hata ayıklama amaçlı bir API anahtarı oluşturacaksınız.

1. Üretim uygulamalarınızı Firebase'e kaydedin

Öncelikle üretim uygulamalarınızı Firebase'e kaydedin.

  1. Uygulamanızın SHA-1 imzalarına sahip olduğunuzdan emin olun. Nasıl yapılacağını öğrenmek için Müşterinizin kimliğini doğrulama başlıklı makaleyi inceleyin.

  2. Firebase konsolunda Proje ayarları'na gidip Ayarlar sekmesini seçin.

  3. Uygulamalarınız kartına ilerleyin ve ardından Android uygulamanızı seçin.

  4. Uygulamanızın SHA-1 imzasını uygulamanızın bilgilerine ekleyin.

2. API anahtarlarınızın kapsamını kısıtlama

Ardından, mevcut API anahtarlarınızı Cloud Vision API'ye erişim izni vermeyecek şekilde yapılandırın:

  1. Google Cloud Console'un Kimlik Bilgileri sayfasını açın. İstendiğinde projenizi seçin.

  2. Listedeki her API anahtarı için düzenleme görünümünü açın.

  3. API kısıtlamaları bölümünde Anahtarı kısıtla'yı seçin ve API anahtarının erişebilmesini istediğiniz tüm API'leri listeye ekleyin. Cloud Vision API'yi eklemediğinizden emin olun.

    Bir API anahtarının API kısıtlamalarını yapılandırdığınızda anahtarın erişebildiği API'leri açıkça beyan etmiş olursunuz. Varsayılan olarak, API kısıtlamaları bölümünde Anahtarı kısıtlama seçildiğinde proje için etkinleştirilmiş tüm API'lere erişmek için bir API anahtarı kullanılabilir.

Mevcut API anahtarlarınız artık Cloud ML hizmetlerine erişim sağlamayacak ancak her anahtar, API kısıtlamaları listesine eklediğiniz tüm API'ler için çalışmaya devam edecektir.

Gelecekte başka API'leri etkinleştirirseniz bunları geçerli API anahtarının API kısıtlamaları listesine eklemeniz gerektiğini unutmayın.

3. Yalnızca hata ayıklama amaçlı API anahtarı oluşturma ve kullanma

Son olarak, yalnızca geliştirme için kullanılacak yeni bir API anahtarı oluşturun. Firebase ML, bu API anahtarını, emülatörlerde çalıştırma gibi uygulama kimlik doğrulamasının mümkün olmadığı ortamlarda Google Cloud hizmetlerine erişmek için kullanabilir.

  1. Geliştirme için kullanılacak yeni bir API anahtarı oluşturun:

    1. Google Cloud Console'un Kimlik Bilgileri sayfasını açın. İstendiğinde projenizi seçin.

    2. Kimlik bilgileri oluştur > API anahtarı'nı tıklayın ve yeni API anahtarını not edin. Bu anahtar, kimliği doğrulanmamış uygulamalardan API erişimine izin verir. Bu nedenle bu anahtarı gizli tutun.

  2. Yayınlanan uygulamanıza yeni hata ayıklama API anahtarının sızdırılmaması için hata ayıklama API'si anahtarını, yalnızca hata ayıklama derlemelerinde kullanılan bir Android manifest dosyasında belirtin:

    1. Halihazırda bir hata ayıklama manifest'iniz yoksa Dosya > Yeni > Diğer > Android Manifest Dosyası'nı tıklayıp hedef kaynak gruplarından debug'yi seçerek oluşturun.

    2. Hata ayıklama manifestine aşağıdaki bildirimi ekleyin:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. Uygulamanızda, istemcinizin kimliğini üretimde doğrulamak amacıyla sertifika parmak izi eşleştirmesi kullanacak ve API anahtarlarını (hata ayıklama anahtarı) yalnızca hata ayıklama derlemelerinde kullanacak şekilde Firebase ML'yi yapılandırın:

    Kotlin+KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

    Java

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

Sonraki adımlar

Diğer Firebase özelliklerini kullanırken uygulamanızı lansmana hazırlama hakkında bilgi almak için lansman kontrol listesine bakın.