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 usługami Firebase i Google. Na tej stronie znajdziesz podstawowe informacje o kluczach interfejsu API oraz sprawdzone metody korzystania z nich i zarządzania nimi w aplikacjach Firebase.

Ogólne informacje o kluczach interfejsów API i Firebase

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

W przeciwieństwie do typowego sposobu używania kluczy interfejsu API, klucze interfejsu API usług Firebase nie służą do kontrolowania dostępu do zasobów backendu. Można to zrobić tylko za pomocą Firebase Security Rules (aby kontrolować, którzy użytkownicy mogą uzyskiwać dostęp do zasobów) i Firebase App Check (aby kontrolować, które aplikacje mogą uzyskiwać dostęp do zasobów).

Zazwyczaj klucze interfejsu API należy starannie chronić (np. za pomocą usługi skarbca lub ustawiając je jako zmienne środowiskowe). Jednak klucze interfejsu API do usług Firebase można umieszczać w kodzie lub w plikach konfiguracyjnych.

Klucze interfejsu API do usług Firebase można bezpiecznie umieszczać w kodzie, ale warto sprawdzić i zastosować do nich odpowiednie ograniczenia i limity.

Tworzenie kluczy interfejsu API

Projekt Firebase może mieć wiele kluczy interfejsu API, ale każdy klucz interfejsu API 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 interfejsu API dla Twojego projektu, gdy wykonasz dowolną z tych czynności:

  • Utwórz projekt Firebase > Browser key automatycznie utworzony
  • 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 Google Cloudkonsoli, na przykład na potrzeby programowania lub debugowania. Więcej informacji o tym, kiedy może być to zalecane, znajdziesz w dalszej części tej strony.

Znajdowanie kluczy interfejsu API

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

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

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

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

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

Używanie klucza API

Klucze API służą do identyfikowania projektu Firebase podczas interakcji z usługami Firebase lub Google. Służą one w szczególności do powiązania żądań interfejsu API z projektem na potrzeby limitów i płatności. Przydają się też do uzyskiwania dostępu do danych publicznych.

Możesz na przykład jawnie użyć klucza interfejsu API, przekazując jego wartość w wywołaniu interfejsu API REST jako parametr zapytania. Ten przykład pokazuje, jak wysłać żądanie do Dynamic Links interfejsu API skracającego linki:

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

Gdy aplikacja wywołuje interfejs Firebase API, który wymaga klucza interfejsu API dostarczonego przez klienta mobilnego lub internetowego, automatycznie wyszukuje w pliku lub obiekcie konfiguracyjnym Firebase klucz interfejsu API projektu. Możesz jednak podać klucze interfejsu API dla aplikacji za pomocą innego mechanizmu, np. zmiennych środowiskowych.

Sprawdź klucze interfejsu API i zastosuj do nich odpowiednie ograniczenia (zalecane).

Klucza interfejsu API do usług Firebase nie trzeba traktować jako informacji tajnych, ale warto sprawdzić i zastosować ograniczenia opisane w tej sekcji.

Sprawdzanie interfejsów API automatycznie dodanych 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 dozwolonych są powiązane z Firebase i wymagają podania klucza interfejsu API wraz z wywołaniem. Pamiętaj, że większość interfejsów API wymaganych do korzystania z usług Firebase nie musi być na liście dozwolonych kluczy API.

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

Zwiększ limit, jeśli używasz Authentication opartego na haśle

Jeśli używasz uwierzytelniania opartego na haśleFirebase Authentication, a ktoś zdobędzie Twój klucz interfejsu API, nie będzie mógł uzyskać dostępu do żadnych danych bazy danychCloud Storage ani Firebase Security Rules projektu Firebase, o ile te dane są chronione przezFirebase 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 dotyczące Twojego projektu.

Aby zapobiec możliwości nadużycia klucza interfejsu API do przeprowadzenia ataku siłowego, możesz zmniejszyć domyślny limit punktów końcowych identitytoolkit.googleapis.com, aby odzwierciedlał normalny ruch w aplikacji. Pamiętaj, że jeśli zmniejszysz ten limit, a Twoja aplikacja nagle zyska użytkowników, możesz otrzymywać błędy logowania, dopóki nie zwiększysz limitu. Limity interfejsów API projektu możesz zmienić w Google Cloudkonsoli.

W przypadku usług spoza Firebase używaj osobnych, ograniczonych kluczy interfejsu API.

Chociaż klucze interfejsu API używane w usługach Firebase nie muszą być traktowane jako tajne, w przypadku kluczy interfejsu API używanych z innymi interfejsami API Google Cloud należy zachować dodatkowe środki ostrożności.

Jeśli używasz Google Cloud interfejsu API (na dowolnej platformie), który nie jest przeznaczony dla usługi lub produktu Firebase, zdecydowanie zalecamy utworzenie oddzielnych, ograniczonych kluczy interfejsu API do używania z tymi interfejsami. Jest to szczególnie ważne, jeśli interfejs API dotyczy usługi Google Cloud, za którą pobierane są opłaty.

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

Używając oddzielnych, ograniczonych kluczy interfejsu API do interfejsów API innych niż Firebase, możesz w razie potrzeby obracać lub zastępować klucze oraz dodawać do nich dodatkowe ograniczenia bez zakłócania korzystania z usług Firebase.

Używaj kluczy interfejsu API specyficznych dla środowiska (zalecane)

Jeśli skonfigurujesz różne projekty Firebase dla różnych środowisk, np. testowego i produkcyjnego, ważne jest, aby każde wystąpienie aplikacji wchodziło w interakcję z odpowiednim projektem Firebase. Na przykład instancja aplikacji w środowisku testowym nie powinna nigdy komunikować się z projektem Firebase w środowisku produkcyjnym. Oznacza to również, że aplikacja testowa musi używać kluczy interfejsu API powiązanych z testowym projektem Firebase.

Aby ograniczyć problemy z promowaniem zmian w kodzie z etapu rozwoju do etapu testowania i produkcji, zamiast umieszczać klucze interfejsu API w samym kodzie, ustaw je jako zmienne środowiskowe lub umieść w pliku konfiguracyjnym.

Pamiętaj, że jeśli używasz Firebase Local Emulator Suite do programowania razem z Firebase ML, musisz utworzyć i używać klucza interfejsu API przeznaczonego tylko do debugowania. Instrukcje tworzenia tego rodzaju klucza znajdziesz w Firebase ML dokumentacji.

Najczęstsze pytania i rozwiązywanie problemów

Najczęstsze pytania

Rozwiązywanie problemów