Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Chroń dane logowania do chmury w aplikacji Firebase ML na Androida

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Jeśli Twoja aplikacja na Androida korzysta z jednego z chmurowych interfejsów API Firebase ML, zanim uruchomisz ją w środowisku produkcyjnym, wykonaj dodatkowe czynności, aby zapobiec nieautoryzowanemu dostępowi do interfejsu API.

W przypadku aplikacji produkcyjnych zapewnisz dostęp do usług w chmurze tylko uwierzytelnionym klientom. (Należy pamiętać, że tylko urządzenia niezrootowane mogą uwierzytelniać się przy użyciu opisanej metody).

Następnie utworzysz klucz API tylko do debugowania, którego możesz używać dla wygody podczas testowania i programowania.

1. Zarejestruj swoje aplikacje produkcyjne w Firebase

Najpierw zarejestruj swoje aplikacje produkcyjne w Firebase.

  1. Upewnij się, że masz podpisy SHA-1 aplikacji. Zapoznaj się z częścią Uwierzytelnianie klienta , aby dowiedzieć się, jak to zrobić.

  2. Przejdź do swoich projektu w konsoli Firebase, a następnie wybierz kartę Ustawienia .

  3. Przewiń w dół do karty Twoje aplikacje , a następnie wybierz swoją aplikację na Androida.

  4. Dodaj podpis SHA-1 swojej aplikacji do informacji o aplikacji.

2. Ogranicz zakres swoich kluczy API

Następnie skonfiguruj istniejące klucze API, aby uniemożliwić dostęp do Cloud Vision API:

  1. Otwórz stronę Dane logowania w Google Cloud Console. Po wyświetleniu monitu wybierz swój projekt.

  2. Dla każdego istniejącego klucza API na liście otwórz widok do edycji.

  3. W sekcji Ograniczenia interfejsu API wybierz Ogranicz klucz , a następnie dodaj do listy wszystkie interfejsy API, do których chcesz mieć dostęp za pomocą klucza API. Upewnij się, że nie dołączasz Cloud Vision API.

    Konfigurując ograniczenia API klucza API , jawnie deklarujesz interfejsy API, do których klucz ma dostęp. Domyślnie, gdy w sekcji Ograniczenia interfejsu API wybrano opcję Nie ograniczaj klucza , klucz interfejsu API może służyć do uzyskiwania dostępu do dowolnego interfejsu API, który jest włączony w projekcie.

Teraz Twoje istniejące klucze API nie zapewnią dostępu do usług Cloud ML, ale każdy klucz będzie nadal działał dla wszystkich interfejsów API dodanych do listy ograniczeń API .

Pamiętaj, że jeśli w przyszłości włączysz dodatkowe interfejsy API, musisz dodać je do listy ograniczeń API dla odpowiedniego klucza API.

3. Utwórz i używaj klucza API tylko do debugowania

Na koniec utwórz nowy klucz API, który będzie używany tylko do programowania. Firebase ML może używać tego klucza API do uzyskiwania dostępu do usług Google Cloud w środowiskach, w których uwierzytelnianie aplikacji nie jest możliwe, na przykład podczas uruchamiania na emulatorach.

  1. Utwórz nowy klucz API, który będzie używany do programowania:

    1. Otwórz stronę Dane logowania w Google Cloud Console. Po wyświetleniu monitu wybierz swój projekt.

    2. Kliknij Utwórz poświadczenia > Klucz API i zanotuj nowy klucz API. Ten klucz umożliwia dostęp do interfejsu API z nieuwierzytelnionych aplikacji, więc zachowaj ten klucz jako poufny .

  2. Aby upewnić się, że nowy klucz API debugowania nie wycieknie z wydaną aplikacją, podaj klucz debugowania API w pliku manifestu Androida używanym tylko do debugowania kompilacji:

    1. Jeśli nie masz jeszcze manifestu debugowania, utwórz go, klikając pozycję plik > nowy > inny > plik manifestu systemu Android i wybierając debug z docelowych zestawów źródłowych.

    2. W manifeście debugowania dodaj następującą deklarację:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. W swojej aplikacji skonfiguruj Firebase ML tak, aby używała dopasowywania odcisków palców certyfikatów do uwierzytelniania klienta w środowisku produkcyjnym i używała kluczy API — klucza debugowania — tylko w kompilacjach debugowania:

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

Następne kroki

Zapoznaj się z listą kontrolną uruchamiania , aby uzyskać informacje na temat przygotowania aplikacji do uruchomienia podczas korzystania z innych funkcji Firebase.