Android uygulamanız Firebase ML'nın bulut API'lerinden birini kullanıyorsa uygulamanızı üretimde kullanıma sunmadan önce yetkisiz API erişimini engellemek için birkaç ek adım atmanız gerekir.
Üretim uygulamalarınız için yalnızca kimliği doğrulanmış istemcilerin bulut hizmetlerine erişebilmesini sağlarsınız. (Açıklanan yöntemle yalnızca root erişimli olmayan cihazların kimliğinin doğrulanabileceğini unutmayın.)
Ardından, test ve geliştirme sırasında kolaylık sağlaması 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 kaydetme
Öncelikle üretim uygulamalarınızı Firebase'e kaydedin.
Uygulamanızın SHA-1 imzalarına sahip olduğunuzdan emin olun. Nasıl yapılacağını öğrenmek için İstemcinizin kimliğini doğrulama başlıklı makaleyi inceleyin.
Firebase konsolunda Proje ayarları'na gidip Ayarlar sekmesini seçin.
Uygulamalarınız kartına gidip Android uygulamanızı seçin.
Uygulamanızın SHA-1 imzasını uygulama bilgilerinize ekleyin.
2. API anahtarlarınızın kapsamını kısıtlama
Ardından, mevcut API anahtarlarınızı Cloud Vision API'ye erişimi engelleyecek şekilde yapılandırın:
Google Cloud konsolunun Kimlik bilgileri sayfasını açın. İstendiğinde projenizi seçin.
Listedeki her mevcut API anahtarı için düzenleme görünümünü açın.
API kısıtlamaları bölümünde Anahtarı kısıtla'yı seçin, ardından API anahtarının erişmesini istediğiniz tüm API'leri listeye ekleyin. Cloud Vision API'nin dahil edilmediğinden emin olun.
Bir API anahtarının API kısıtlamalarını yapılandırdığınızda, anahtarın erişebileceği API'leri açıkça belirtirsiniz. Varsayılan olarak, API kısıtlamaları bölümünde Anahtarı kısıtlama seçiliyken bir API anahtarı, proje için etkinleştirilmiş tüm API'lere erişmek üzere kullanılabilir.
Mevcut API anahtarlarınız artık Cloud ML hizmetlerine erişim izni vermeyecek ancak her anahtar, API kısıtlamaları listesine eklediğiniz tüm API'ler için çalışmaya devam edecek.
Gelecekte ek API'ler etkinleştirirseniz bunları ilgili API anahtarının API kısıtlamaları listesine eklemeniz gerektiğini unutmayın.
3. Yalnızca hata ayıklama için kullanılacak bir API anahtarı oluşturma ve kullanma
Son olarak, yalnızca geliştirme için kullanılacak yeni bir API anahtarı oluşturun. Firebase ML, uygulama kimlik doğrulamasının mümkün olmadığı ortamlarda (ör. emülatörlerde çalışırken) Google Cloud hizmetlerine erişmek için bu API anahtarını kullanabilir.
Geliştirme için kullanılacak yeni bir API anahtarı oluşturun:
Google Cloud konsolunun Kimlik bilgileri sayfasını açın. İstendiğinde projenizi seçin.
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.
Yeni hata ayıklama API anahtarının yayınlanan uygulamanızla birlikte sızdırılmaması için hata ayıklama API anahtarını yalnızca hata ayıklama derlemeleri için kullanılan bir Android manifest dosyasında belirtin:
Hata ayıklama manifestiniz yoksa File > New > Other > Android Manifest File'ı (Dosya > Yeni > Diğer > Android Manifest Dosyası) tıklayıp hedef kaynak kümelerinden
debug
'ı seçerek bir tane oluşturun.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>
Uygulamanızda, üretimde istemcinizin kimliğini doğrulamak için sertifika dijital parmak izi eşleştirmesini kullanacak ve yalnızca hata ayıklama derlemelerinde API anahtarlarını (hata ayıklama anahtarı) kullanacak şekilde Firebase ML yapılandırın:
Kotlin
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ı kullanıma sunmaya hazırlama hakkında bilgi edinmek için kullanıma sunma yapılacaklar listesine bakın.