Dowiedz się więcej o używaniu kluczy interfejsu API dla Firebase i zarządzaniu nimi
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
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.
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.
Wyświetl instrukcje tworzenia kluczy interfejsu API
Te instrukcje opisują, jak utworzyć osobny, ograniczony klucz interfejsu API dla fałszywego interfejsu API o nazwie Super Service API.
Krok 1. Skonfiguruj istniejące klucze interfejsu API, aby uniemożliwić dostęp do Super Service API
Otwórz stronę Dane logowania w konsoli Google Cloud. Gdy pojawi się prośba, wybierz projekt.
Otwórz widok edycji każdego klucza API na liście.
W sekcji Ograniczenia interfejsów API wybierz Ogranicz klucz, a następnie dodaj do listy wszystkie interfejsy API, do których klucz ma mieć dostęp. Nie uwzględniaj interfejsu API, dla którego tworzysz osobny klucz interfejsu API (w tym przykładzie Super Service API).
Konfigurując ograniczenia interfejsów API klucza interfejsu API, wyraźnie deklarujesz interfejsy API, do których klucz ma dostęp. Domyślnie, gdy w sekcji Ograniczenia interfejsów API jest zaznaczona opcja Nie ograniczaj klucza, klucz interfejsu API może być używany do uzyskiwania dostępu do dowolnego interfejsu API włączonego w projekcie.
Od tej pory istniejące klucze interfejsu API nie będą przyznawać dostępu do Super Service API, ale każdy klucz będzie nadal działać w przypadku interfejsów API, które zostały dodane do listy ograniczeń interfejsu API.
Krok 2. Utwórz nowy klucz interfejsu API i używaj go do uzyskiwania dostępu do Super Service API
Wróć na stronę Dane logowania. Upewnij się, że projekt Firebase jest nadal wybrany.
Kliknij Utwórz dane logowania > Klucz interfejsu API. Zanotuj nowy klucz interfejsu API, a potem kliknij Ogranicz klucz.
W sekcji Ograniczenia interfejsów API wybierz Ogranicz klucz, a następnie dodaj do listy tylkoSuper Service API.
Ten nowy klucz interfejsu API zapewnia dostęp tylko do Super Service API.
Skonfiguruj aplikację i usługi, aby używały nowego klucza interfejsu API.
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
Czy klucze API do usług Firebase są domyślnie ograniczone?
Tak. Domyślnie wszystkie klucze interfejsu API, które Firebase automatycznie udostępnia do użytku z interfejsami API powiązanymi z Firebase, mają automatycznie zastosowane „Ograniczenia interfejsu API”. Zobacz listę interfejsów API związanych z Firebase, które znajdują się na tej liście dozwolonych.
Interfejsy API dodane do tej listy dozwolonych to te interfejsy API, które są wywoływane przez usługi Firebase z kodu klienta i wymagają kluczy interfejsu API do identyfikacji projektu lub aplikacji Firebase. Pamiętaj, że większość interfejsów API wymaganych do korzystania z usług Firebase nie musi w rzeczywistości znajdować się na liście dozwolonych dla Twoich kluczy interfejsu 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 usługi Firebase, z których korzystasz (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.
Pamiętaj o tych kwestiach dotyczących stosowania przez Firebase tych „ograniczeń interfejsu API”:
Od maja 2024 r. wszystkie nowe klucze interfejsu API automatycznie udostępniane przez Firebase będą automatycznie ograniczone do listy interfejsów API związanych z Firebase.
W maju 2024 r. wszystkie dotychczasowe i nieograniczone klucze interfejsów API, które Firebase wcześniej automatycznie udostępniał, zostaną ograniczone do listy interfejsów API związanych z Firebaseoraz wszystkich interfejsów API, które są obecnie włączone w projekcie.
Nie zmieniliśmy żadnych istniejących i już ograniczonych kluczy interfejsu API, które Firebase wcześniej automatycznie udostępnił.
Wszystkie istniejące klucze interfejsu API, które nie zostały automatycznie udostępnione przez Firebase, nie uległy zmianie.
Jak mogę sprawdzić, który klucz interfejsu API jest powiązany z moją aplikacją Firebase?
Aby określić, który klucz interfejsu API jest powiązany z aplikacją Firebase, możesz użyć dowolnej z tych opcji:
Firebase konsola
Otwórz settingsUstawienia projektu i przewiń w dół do karty Twoje aplikacje.
Wybierz interesującą Cię aplikację.
Uzyskaj plik/obiekt konfiguracji Firebase dla interesującej Cię aplikacji, a następnie znajdź jej klucz interfejsu API:
Apple: pobierz GoogleService-Info.plist, a następnie znajdź pole API_KEY.
Android: pobierz google-services.json, znajdź konfigurację interesującej Cię aplikacji (poszukaj jej nazwy pakietu), a następnie znajdź pole current_key.
Internet: kliknij Konfiguracja, a potem znajdź pole apiKey.
Firebase CLI
Uzyskaj plik/obiekt konfiguracji Firebase dla interesującej Cię aplikacji, uruchamiając to polecenie:
W wydrukowanej konfiguracji Firebase aplikacji znajdź jej klucz interfejsu API:
Apple: znajdź pole API_KEY.
Android: znajdź konfigurację interesującej Cię aplikacji (wyszukaj jej nazwę pakietu), a następnie znajdź pole current_key.
Sieć: znajdź pole apiKey.
Interfejs API typu REST
Uzyskaj apiKeyId (UID) klucza interfejsu API, wywołując odpowiedni punkt końcowy dla interesującej Cię aplikacji, a następnie przekaż wartość apiKeyId do następnego kroku.
Ta keyString wartość jest taka sama jak w artefakcie konfiguracji aplikacji (Apple | Android | sieć).
Czy w pliku/obiekcie konfiguracji Firebase mogę mieć 2 klucze interfejsu API wymienione dla tej samej aplikacji Firebase?
Aplikacje Firebase na urządzenia Apple – każda aplikacja ma własny plik konfiguracyjny i może mieć tylko jeden klucz interfejsu API.
Aplikacje Firebase na Androida – wszystkie aplikacje na Androida w projekcie Firebase są wymienione w tym samym pliku konfiguracyjnym, a każda aplikacja może mieć tylko jeden klucz API. Każda aplikacja w tym pliku konfiguracyjnym może mieć jednak inny klucz.
Aplikacje internetowe Firebase – każda aplikacja ma własny obiekt konfiguracji i może mieć tylko jeden klucz interfejsu API.
Możesz jednak używać kilku kluczy interfejsu API w jednej aplikacji. Musisz udostępnić aplikacji mechanizm dostępu do tych innych kluczy interfejsu API, np. za pomocą zmiennej środowiskowej. Mechanizm dostępu do innych kluczy interfejsu API nie może zależeć od tego, czy te klucze interfejsu API są wymienione w pliku/obiekcie konfiguracyjnym Firebase.
Skąd Firebase wie, który klucz API pasuje do aplikacji (np. w pliku/obiekcie konfiguracji Firebase)?
Jeśli Firebase nie znajdzie żadnych pasujących kluczy z ograniczeniami, w pliku lub obiekcie konfiguracyjnym umieści iOS key w przypadku aplikacji na iOS, Android key w przypadku aplikacji na Androida i Browser key w przypadku aplikacji internetowych (zakładając, że te klucze istnieją i nie mają „ograniczeń aplikacji”, które uniemożliwiają dopasowanie ich do tej aplikacji).
Czy mogę ręcznie usunąć klucz interfejsu API i pole z pliku/obiektu konfiguracyjnego Firebase?
Tak, możesz ręcznie usunąć klucz interfejsu API z pliku lub obiektu konfiguracyjnego. Musisz jednak zapewnić aplikacji inny mechanizm dostępu do klucza interfejsu API (np. za pomocą zmiennej środowiskowej). W przeciwnym razie wszystkie wywołania usług Firebase zakończą się niepowodzeniem.
Czy mogę ręcznie edytować plik/obiekt konfiguracji Firebase za pomocą różnych kluczy interfejsu API?
Tak, możesz ręcznie edytować plik konfiguracji lub obiekt, aby powiązać z aplikacją inny klucz interfejsu API.
Czy mogę przenieść klucz interfejsu API z jednego projektu Firebase do innego?
Nie. Klucz interfejsu API identyfikuje tylko konkretny projekt i nie można go przenieść do innego projektu.
Co się stanie, jeśli usunę klucz interfejsu API wymieniony w Google Cloud konsoli?
Jeśli usuniesz klucz interfejsu API używany przez aplikację, wywołania interfejsu API z tej aplikacji będą kończyć się niepowodzeniem. Możesz otrzymywać raporty, e-maile lub błędy informujące o tym, że próbujesz użyć nieprawidłowego klucza interfejsu API.
Usunięcie klucza interfejsu API jest trwałe i nie można go cofnąć.
Jakie interfejsy API są wymagane na liście dozwolonych „Ograniczenia interfejsów API” w przypadku klucza interfejsu API Firebase?
W przypadku klucza interfejsu API Firebase na liście dozwolonych „Ograniczenia interfejsu API” klucza muszą się znajdować tylko te interfejsy API, które wymagają od klienta podania klucza interfejsu API wraz z wywołaniem. Pamiętaj, że ten wymóg dotyczy tylko kilku interfejsów API związanych z Firebase. Większość interfejsów API związanych z Firebase włączonych w projekcie nie musi znajdować się na liście dozwolonych „Ograniczenia interfejsu API” klucza.
Z tabeli poniżej dowiesz się, które interfejsy API powiązane z Firebase należy uwzględnić na liście dozwolonych „Ograniczenia interfejsu API” dla klucza interfejsu API Firebase. Pamiętaj, że klucze interfejsu API Firebase powinny być używane tylko w przypadku usług Firebase. Dowiedz się więcej o tworzeniu osobnych, ograniczonych kluczy interfejsu API dla określonych typów interfejsów API.
* Wymagane tylko wtedy, gdy używasz klucza interfejsu API Firebase z narzędziami innych firm lub bezpośredniego dostępu REST do usługi lub produktu Firebase.
** Wymagane w przypadku starszych wersji pakietu SDK produktu. Jeśli używasz najnowszej wersji pakietu SDK, interfejs API nie musi znajdować się na liście dozwolonych klucza.
Rozwiązywanie problemów
Jak naprawić błąd API_KEY_SERVICE_BLOCKED lub Forbidden 403, który informuje, że żądania do tego interfejsu API są blokowane?
Jeśli widzisz błąd API_KEY_SERVICE_BLOCKED lub błąd podobny do tego:
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
Klucz interfejsu API używany przez aplikację do wywoływania interfejsu API prawdopodobnie ma zastosowane „Ograniczenia interfejsu API”, a lista dozwolonych klucza nie zawiera tego interfejsu API.
Jeśli ten błąd występuje podczas próby użycia usługi innej niż Firebase, zdecydowanie zalecamy utworzenie nowego klucza interfejsu API specjalnie dla tej usługi i tego interfejsu API. Klucze API Firebase powinny być używane tylko w przypadku usług i produktów Firebase.
Dowiedz się więcej o tworzeniu osobnych, ograniczonych kluczy interfejsu API dla określonych typów interfejsów API.
Jak naprawić ten błąd? „Nie udało się pobrać z serwera identyfikatora pomiaru tej aplikacji Firebase”.
Klucz interfejsu API używany przez Twoją aplikację internetową prawdopodobnie ma zastosowane „Ograniczenia interfejsu API”. W takim przypadku sprawdź, czy interfejs Firebase Management API znajduje się na liście dozwolonych interfejsów API.
Otrzymałem(-am) e-maila lub komunikat o błędzie, że mój klucz interfejsu API jest nieprawidłowy. Co się stało i jak to naprawić?
Oto kilka najczęstszych przyczyn nieprawidłowych kluczy API:
Klucz interfejsu API ma zastosowane „Ograniczenia klucza interfejsu API”, które sprawiają, że nie pasuje on do aplikacji próbującej go użyć („Ograniczenia aplikacji”) lub nie można go użyć w wywoływanym interfejsie API („Ograniczenia interfejsu API”).
Klucz interfejsu API został usunięty z projektu w konsoli Google Cloud.
Klucz interfejsu API nie został utworzony dla identyfikatora projektu podanego w pliku/obiekcie konfiguracyjnym Firebase aplikacji.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-09-06 UTC."],[],[],null,[]]