Android uygulamanız Firebase ML'nin bulut API'lerinden birini kullanıyorsa, uygulamanızı üretimde başlatmadan ö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ğlayacaksınız. (Yalnızca köklü olmayan cihazların açıklanan yöntemi kullanarak kimlik doğrulaması yapabileceğ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 özellikli bir API anahtarı oluşturacaksınız.
1. Üretim uygulamalarınızı Firebase'e kaydedin
Öncelikle üretim uygulamalarınızı Firebase'e kaydedin.
Uygulamanızın SHA-1 imzalarına sahip olduğunuzdan emin olun. Nasıl yapıldığını öğrenmek için İstemcinizin kimliğini doğrulama bölümüne bakın.
Firebase konsolunda
Proje ayarlarına gidin, ardından Ayarlar sekmesini seçin.Uygulamalarınız kartına ilerleyin, ardından Android uygulamanızı seçin.
Uygulamanızın bilgilerine uygulamanızın SHA-1 imzasını ekleyin.
2. API anahtarlarınızın kapsamını kısıtlayın
Ardından, Cloud Vision API'ye erişimi engellemek için mevcut API anahtarlarınızı yapılandırın:
Google Cloud Console'un Kimlik Bilgileri sayfasını açın. İstendiğinde, projenizi seçin.
Listedeki mevcut her 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'yi eklemediğinizden emin olun.
Bir API anahtarının API kısıtlamalarını yapılandırdığınızda, anahtarın erişim sahibi olduğu API'leri açık bir şekilde bildirmiş olursunuz. Varsayılan olarak, API kısıtlamaları bölümünde Anahtarı kısıtlama seçeneği seçildiğinde, proje için etkinleştirilen herhangi bir API'ye erişmek için bir API anahtarı kullanılabilir.
Artık mevcut API anahtarlarınız, bulut makine öğrenimi hizmetlerine erişim izni vermeyecek, ancak her anahtar, API kısıtlama listesine eklediğiniz tüm API'ler için çalışmaya devam edecek.
Gelecekte herhangi bir ek API'yi etkinleştirirseniz, bunları geçerli API anahtarı için API kısıtlamaları listesine eklemeniz gerektiğini unutmayın.
3. Yalnızca hata ayıklama özellikli bir API anahtarı oluşturun ve kullanın
Son olarak, yalnızca geliştirme için kullanılacak yeni bir API anahtarı oluşturun. Firebase ML, öykünücüler üzerinde çalışırken olduğu gibi uygulama kimlik doğrulamasının mümkün olmadığı ortamlarda 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 Console'un 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ılmadığından emin olmak için hata ayıklama API anahtarını yalnızca hata ayıklama derlemeleri için kullanılan bir Android bildirim dosyasında belirtin:
Halihazırda bir hata ayıklama bildiriminiz yoksa, Dosya > Yeni > Diğer > Android Bildirim Dosyası'na tıklayıp hedef kaynak kümelerinden
debug
seçerek bir tane oluşturun.Hata ayıklama bildiriminde aşağıdaki bildirimi ekleyin:
<application> <meta-data android:name="com.firebase.ml.cloud.ApiKeyForDebug" android:value="your-debug-api-key" /> </application>
Uygulamanızda, Firebase ML'yi üretimde istemcinizin kimliğini doğrulamak için sertifika parmak izi eşleştirmeyi kullanacak ve API anahtarlarını (hata ayıklama anahtarı) yalnızca hata ayıklama yapılarında kullanacak şekilde 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ı başlatmaya hazırlama hakkında bilgi için başlatma kontrol listesine bakın.