Dowiedz się więcej o używaniu kluczy interfejsu API dla Firebase i zarządzaniu nimi

Klucz interfejsu API to unikalny ciąg znaków, który służy do kierowania żądań do projektu Firebase podczas interakcji z Firebase i usługami Google. Na tej stronie znajdziesz podstawowe informacje o kluczach API oraz sprawdzone metody ich używania i zarządzania nimi w przypadku aplikacji Firebase.

Ogólne informacje o kluczach API i Firebase

Klucze API dla Firebase różnią się od typowych kluczy API

W odróżnieniu od typowego sposobu używania kluczy interfejsu API klucze interfejsu API usług Firebase nie służą do kontrolowania dostępu do zasobów backendowych. Można to robić tylko za pomocą interfejsów Firebase Security Rules (do kontrolowania, którzy użytkownicy mają dostęp do zasobów) i Firebase App Check (do kontrolowania, które aplikacje mają dostęp do zasobów).

Zazwyczaj musisz skrupulatnie chronić klucze interfejsu API (np. za pomocą usługi sejfu lub ustawiając klucze jako zmienne środowiskowe). Klucze interfejsu API usług Firebase możesz jednak uwzględniać w kodzie lub zaimportowanych plikach konfiguracyjnych.

Chociaż klucze interfejsu API usług Firebase można bezpiecznie umieszczać w kodzie, należy je sprawdzić i zastosować do nich odpowiednie ograniczenia oraz limity.

Tworzenie kluczy interfejsu API

Projekt Firebase może mieć wiele kluczy interfejsu API, ale każdy klucz może być powiązany tylko z jednym projektem Firebase.

Klucze interfejsu API utworzone automatycznie przez Firebase dla Twoich aplikacji Firebase

Firebase automatycznie tworzy klucze API dla Twojego projektu, gdy wykonasz jedną z tych czynności:

  • Utwórz projekt Firebase > Browser key utworzony automatycznie
  • Utwórz aplikację Apple w Firebase > iOS key utworzona automatycznie
  • Utwórz aplikację Firebase na Androida > Android key utworzona automatycznie
.

Możesz też utworzyć własne klucze API w konsoli Google Cloud, na przykład na potrzeby programowania lub debugowania. Więcej informacji o tym, kiedy może być to zalecane, znajdziesz dalej na tej stronie.

Znajdowanie kluczy interfejsu API

Wszystkimi kluczami interfejsu API projektu możesz zarządzać i wyświetlać je w panelu Interfejsy API i usługi > Dane logowania w konsoli Google Cloud.

W tych miejscach możesz też sprawdzić, który klucz interfejsu API jest automatycznie dopasowywany do aplikacji Firebase. Domyślnie wszystkie aplikacje Firebase w Twoim projekcie na tej samej platformie (Apple, Android lub internet) będą używać tego samego klucza interfejsu API.

  • Aplikacje Apple w Firebase – znajdź klucz interfejsu API dopasowany automatycznie w pliku konfiguracyjnym Firebase GoogleService-Info.plist w polu API_KEY.

  • Aplikacje Firebase na Androida – klucz interfejsu API dopasowany automatycznie znajdziesz w pliku konfiguracyjnym Firebase google-services.json w polu current_key.

  • Aplikacje internetowe Firebase – klucz API dopasowany automatycznie znajdziesz w obiekcie konfiguracji Firebase w polu apiKey.

Używanie klucza API

Klucze API służą do identyfikowania Twojego projektu Firebase podczas interakcji z usługami Firebase/Google. Konkretnie służą do kojarzenia żądań interfejsu API z projektem na potrzeby limitów i rozliczeń. Są one też przydatne do uzyskiwania dostępu do danych publicznych.

Możesz na przykład jawnie użyć klucza API, przekazując jego wartość jako parametr zapytania do wywołania interfejsu API REST. Ten przykład pokazuje, jak wysłać żądanie do interfejsu API skróconego linka Dynamic Links:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Gdy aplikacja wywołuje interfejs Firebase API, który wymaga klucza API przekazanego przez klienta mobilnego lub internetowego, automatycznie wyszukuje klucz API w pliku lub obiekcie konfiguracji Firebase. Możesz jednak udostępnić klucze API swojej aplikacji za pomocą innego mechanizmu, np. zmiennych środowiska.

Sprawdź i zastosuj odpowiednie ograniczenia kluczy interfejsu API (zalecane).

Chociaż nie musisz traktować klucza API usług Firebase jako tajemnicy, musisz sprawdzić i zastosować ograniczenia opisane w tej sekcji.

Sprawdź interfejsy API automatycznie dodane do listy dozwolonych dla kluczy interfejsu API Firebase

Gdy Firebase utworzy w Twoim projekcie klucz interfejsu API, automatycznie dodamy do niego ograniczenia interfejsu API. Interfejsy API dodane do tej listy to interfejsy API związane z Firebase, które wymagają, aby klient podał klucz interfejsu API wraz z wywołaniem. Pamiętaj, że większość interfejsów API wymaganych do korzystania z usług Firebase nie musi znajdować się na liście dozwolonych kluczy API.

Firebase dodaje niezbędne interfejsy API do wszystkich usług Firebase, więc lista dozwolonych interfejsów API dla klucza API może zawierać interfejsy API usług, których nie używasz. Interfejsy API możesz usuwać z listy dozwolonych, ale musisz uważać, aby nie usunąć interfejsów API wymaganych przez Firebase i usługi Firebase, z których korzystasz (patrz lista interfejsów API związanych z Firebase, które muszą znajdować się na liście dozwolonych dla każdej usługi lub produktu). W przeciwnym razie podczas wywoływania usług Firebase będą występować błędy.

.

Zaostrzenie limitu, jeśli używasz Authentication na podstawie hasła

Jeśli używasz Firebase Authentication na podstawie hasła, a ktoś uzyska dostęp do Twojego klucza API, nie będzie mógł uzyskać dostępu do bazy danych projektu Firebase ani do danych Cloud Storage dopóty, dopóki te dane są chronione przez Firebase Security Rules. Mogą jednak używać Twojego klucza API, aby uzyskiwać dostęp do punktów końcowych uwierzytelniania Firebase i wysyłać żądania uwierzytelniania do Twojego projektu.

Aby zmniejszyć ryzyko, że ktoś niewłaściwie użyje klucza interfejsu API do przeprowadzenia ataku siłowego, możesz zawęzić domyślny limit punktów końcowych identitytoolkit.googleapis.com, aby odzwierciedlać normalne oczekiwania dotyczące ruchu w aplikacji. Pamiętaj, że jeśli zawęzisz ten limit, a Twoja aplikacja nagle zyska użytkowników, możesz zacząć otrzymywać błędy logowania, dopóki nie zwiększysz limitu. Limity interfejsu API projektu możesz zmienić w konsoli Google Cloud.

Używaj oddzielnych, ograniczonych kluczy interfejsu API w przypadku usług spoza Firebase

Chociaż kluczy interfejsu API używanych w usługach Firebase nie trzeba traktować jako informacji poufnych, należy zachować szczególną ostrożność w przypadku kluczy interfejsu API używanych w innych interfejsach API Google Cloud.

Jeśli używasz interfejsu API Google Cloud (na dowolnej platformie), który nie jest przeznaczony do usługi lub produktu Firebase, zdecydowanie zalecamy utworzenie oddzielnych, ograniczonych kluczy interfejsu API do korzystania z tych interfejsów. Jest to szczególnie ważne, jeśli interfejs API służy do obsługi płatnej usługi Google Cloud.

Jeśli na przykład używasz interfejsów API Firebase ML i Cloud Vision na iOS, utwórz osobne klucze API, których będziesz używać tylko do uzyskiwania dostępu do interfejsów Cloud Vision API.

Dzięki korzystaniu z osobnych, ograniczonych kluczy API w przypadku interfejsów API innych niż Firebase możesz w razie potrzeby zastąpić klucze lub je zamienić i dodać do nich dodatkowe ograniczenia bez zakłócania korzystania z usług Firebase.

Używanie kluczy interfejsu API określonych dla środowiska (zalecane)

Jeśli skonfigurujesz różne projekty Firebase na różne środowiska, np. testowe i produkcyjne, ważne jest, aby każde wystąpienie aplikacji współpracowało z odpowiednim projektem Firebase. Na przykład instancja aplikacji na etapie testów nie powinna nigdy komunikować się z produkcyjnym projektem Firebase. Oznacza to też, że Twoja aplikacja testowa musi używać kluczy API powiązanych z testowym projektem Firebase.

Aby zmniejszyć problemy z przekazywaniem zmian kodu z rozwoju do środowiska pośredniego, a potem do produkcji, zamiast umieszczać klucze interfejsu API w samym kodzie, ustaw je jako zmienne środowiskowe lub dodaj je do pliku konfiguracyjnego.

Pamiętaj, że jeśli używasz interfejsu Firebase Local Emulator Suite do celów programistycznych, a także interfejsu Firebase ML, musisz utworzyć klucz interfejsu API przeznaczony tylko do debugowania i z niego korzystać. Instrukcje tworzenia tego typu klucza znajdziesz w dokumentacji Firebase ML.

Najczęstsze pytania i rozwiązywanie problemów

Najczęstsze pytania

Rozwiązywanie problemów