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 interfejsu 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 zrobić tylko za pomocą interfejsów Firebase Security Rules (aby kontrolować, którzy użytkownicy mają dostęp do zasobów) i Firebase App Check (aby kontrolować, 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ędnić w kodzie lub przesłanych plikach konfiguracji.
Aplikacje Apple Apple – znajdź w Firebase automatycznie dopasowany klucz interfejsu API
.config, GoogleService-Info.plist, w
API_KEY.
Aplikacje Firebase na Androida – znajdź automatycznie dopasowany klucz interfejsu API w
pliku konfiguracyjnego Firebase google-services.json w
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. Służą one do powiązania żądań do interfejsu API
w ramach Twojego projektu na potrzeby limitów i płatności. Są one też przydatne do uzyskiwania dostępu do danych publicznych.
Możesz na przykład bezpośrednio użyć klucza interfejsu API, przesyłając jego wartość do metody REST
wywołanie interfejsu API jako parametr zapytania, Ten przykład pokazuje, jak możesz wysłać żądanie
do
Interfejs Dynamic Links link Shortener API:
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.
Przejrzyj klucze interfejsu API i zastosuj do nich odpowiednie ograniczenia (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 kluczy interfejsu Firebase API
Gdy Firebase utworzy klucz interfejsu API w projekcie, automatycznie dodamy do niego klucz
„Ograniczenia interfejsów API”
do danego klucza. Interfejsy API dodane do tej listy dozwolonych to interfejsy API związane z Firebase, które wymagają od klienta podania klucza 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 kluczy interfejsu API może zawierać interfejsy API usług, których nie używasz.
Możesz usunąć interfejsy API z listy dozwolonych, ale musisz upewnić się, że nie
usuń interfejsy API wymagane przez Firebase i usługi Firebase, których używasz
(zobacz
lista interfejsów API związanych z Firebase
które muszą znajdować się na liście dozwolonych w przypadku poszczególnych usług / produktów). W przeciwnym razie podczas wywoływania usług Firebase będą występować błędy.
.
Zmniejsz limit, jeśli używasz Authentication opartego na haśle
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 żadnej bazy danych projektu Firebase ani do danych Cloud Storagedopóty, dopóki te dane są chronione przez Firebase Security Rules. Może jednak użyć Twojego klucza interfejsu API, aby uzyskać dostęp
punktów końcowych uwierzytelniania Firebase i wysyłać żądania uwierzytelniania do
w Twoim projekcie.
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żywanie osobnych, ograniczonych kluczy interfejsu API w przypadku każdej usługi 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 dla Firebase
usługi / produktu, zdecydowanie zalecamy utworzenie osobnych, ograniczonych kluczy interfejsu API
do użytku z tymi interfejsami API. Jest to szczególnie ważne, jeśli interfejs API jest przeznaczony do
płatna usługa Google Cloud.
Jeśli na przykład korzystasz z Firebase ML i interfejsów Cloud Vision API w iOS,
utwórz osobne klucze API, których używasz tylko
dostępu do 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.
Wyświetl instrukcje tworzenia kluczy dla interfejsu API
Te instrukcje opisują, jak utworzyć oddzielny klucz API z ograniczeniami dla fikcyjnego interfejsu API o nazwie Super Service API.
Krok 1. Skonfiguruj istniejące klucze interfejsu API, aby zablokować dostęp do Super Service API
Otwórz Dane logowania.
stronie konsoli Google Cloud. Gdy pojawi się prośba, wybierz projekt.
Otwórz widok edycji każdego klucza interfejsu API znajdującego się na liście.
W sekcji Ograniczenia interfejsów API wybierz Ogranicz klucz, a potem dodaj
wyświetlić listę wszystkich interfejsów API, do których klucz API ma mieć dostęp. Upewnij się, że nie uwzględniasz interfejsu API, dla którego tworzysz osobny klucz API (w tym przykładzie Super Service API).
Podczas konfigurowania ograniczeń interfejsu API klucza interfejsu API musisz jednoznacznie
deklarowanie interfejsów API, do których klucz ma dostęp. Domyślnie, gdy w sekcji Ograniczenia interfejsów API wybrana jest opcja Nie ograniczaj klucza, klucz interfejsu API może służyć do uzyskiwania dostępu do dowolnego interfejsu API włączonego w projekcie.
Dotychczasowe klucze interfejsu API nie będą już przyznawać dostępu do interfejsu Super Service API, ale każdy z nich będzie nadal działać z interfejsami API dodanymi do listy ograniczeń interfejsu API.
Krok 2. Utwórz nowy klucz interfejsu API i użyj go do uzyskania dostępu do usługi Super Service API
Wróć na stronę Dane logowania. Upewnij się, że nadal jest wybrany Twój projekt Firebase.
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 potem dodaj
wymieniaj tylkoSuper Service API.
Ten nowy klucz interfejsu API zapewnia dostęp tylko do interfejsu Super Service API.
Skonfiguruj aplikację i usługi tak, aby korzystały z nowego klucza interfejsu API.
Użyj kluczy interfejsu API odpowiednich 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 również, że Twoja
aplikacja przejściowa musi używać kluczy interfejsu API powiązanych z przejściowym projektem Firebase.
Aby ograniczyć 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 Firebase Local Emulator Suite do programowania razem
za pomocą Firebase ML, musisz utworzyć klucz interfejsu API przeznaczony tylko do debugowania i używać go. Instrukcje tworzenia tego typu klucza znajdziesz w dokumentacji Firebase ML.
Najczęstsze pytania i rozwiązywanie problemów
Najczęstsze pytania
Czy klucze interfejsu API usług Firebase są domyślnie ograniczone?
Tak, domyślnie wszystkie klucze interfejsu API, które Firebase automatycznie udostępnia na potrzeby obsługi administracyjnej
Interfejsy API związane z Firebase
„Ograniczenia interfejsów API”
stosowane automatycznie. 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 interfejsy API wywoływane przez usługi Firebase z
wymaga kluczy API do identyfikacji projektu Firebase lub
aplikacji. Pamiętaj, że większość interfejsów API wymaganych do korzystania z usług Firebase
muszą znajdować się na liście dozwolonych kluczy interfejsu 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. Ty
możesz usunąć interfejsy API z listy dozwolonych, ale musisz bardzo ostrożnie
interfejsów API wymaganych przez Firebase i usług Firebase, których używasz (zobacz
lista interfejsów API związanych z Firebase
które muszą znajdować się na liście dozwolonych w przypadku poszczególnych usług / produktów). W przeciwnym razie
będzie zwracał błędy przy wykonywaniu wywołań usług Firebase.
Możesz wyświetlić wszystkie swoje klucze interfejsu API i ich „Ograniczenia interfejsów API” w
Interfejsy API Usługi > Dane logowania
w konsoli Google Cloud.
Zapoznaj się z tymi informacjami o tym, jak Firebase stosuje „ograniczenia interfejsu API”:
W maju 2024 r. wszystkie istniejące oraz nieograniczone klucze interfejsu API, które Firebase wcześniej automatycznie udostępniło, zostaną ograniczone do listy interfejsów API związanych z Firebaseoraz wszystkich interfejsów API, które są obecnie włączone w projekcie.
Nie zmieniono żadnych istniejących i już ograniczonych kluczy interfejsu API, które zostały wcześniej automatycznie udostępnione przez Firebase.
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 Twoją aplikacją Firebase, możesz użyć dowolnej z tych opcji:
Konsola Firebase
Kliknij settings, Ustawienia projektu, a następnie przewiń w dół do karty Twoje aplikacje.
Wybierz aplikację, która Cię interesuje.
Pobierz plik lub obiekt konfiguracji Firebase dla interesującej Cię aplikacji, a potem znajdź jej klucz interfejsu API:
Apple: pobierz GoogleService-Info.plist i znajdź pole API_KEY.
Android: pobierz plik google-services.json, znajdź konfigurację interesującej Cię aplikacji (szukaj nazwy pakietu), a następnie znajdź pole current_key.
Internet: wybierz opcję Konfiguracja i znajdź pole apiKey.
Interfejs wiersza poleceń Firebase
Uzyskaj plik lub obiekt konfiguracji Firebase dla wybranej aplikacji, uruchamiając to polecenie:
keyString to ta sama wartość, którą można znaleźć w pliku
artefakt konfiguracji
(Apple |
Android |
Sieć).
Czy w pliku lub obiekcie konfiguracji Firebase mogę mieć 2 klucze API dla tej samej aplikacji Firebase?
Aplikacje Apple Apple – każda aplikacja ma własny plik konfiguracyjny i może mieć tylko
jeden klucz API.
Aplikacje Firebase na Androida – wszystkie aplikacje na Androida w projekcie Firebase są wymienione w tym samym pliku konfiguracji, a każda z nich może mieć tylko 1 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.
W jednej aplikacji możesz jednak używać wielu kluczy interfejsu API. Musisz zapewnić aplikacji mechanizm dostępu do tych innych kluczy API, np. za pomocą zmiennej środowiska. Mechanizm dostępu do innych kluczy interfejsu API nie może polegać na nich
Klucze interfejsu API wymienione w pliku konfiguracyjnym lub obiekcie Firebase.
Jak Firebase
określić klucz interfejsu API, który należy dopasować do aplikacji (np. w konfiguracji Firebase,
plik/obiekt)?
Jeśli Firebase nie znajdzie pasujących kluczy z ograniczeniami, wyświetli
plik/obiekt konfiguracji iOS key w przypadku aplikacji Apple, Android key dla aplikacji
aplikacje na Androida i Browser key w przypadku aplikacji internetowych (przy założeniu, że te klucze istnieją)
i nie mają „Ograniczenia aplikacji” co uniemożliwia ich dopasowanie.
).
Czy mogę ręcznie usunąć klucz i pole interfejsu API z pliku lub obiektu konfiguracji Firebase?
Tak, możesz ręcznie usunąć klucz API z pliku lub obiektu konfiguracji. Pamiętaj jednak:
musisz udostępnić 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 konfiguracyjny Firebase za pomocą różnych kluczy interfejsu API?
Tak. Możesz ręcznie edytować plik lub obiekt konfiguracji, aby powiązać inny klucz API z aplikacją.
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 podany w konsoli Google Cloud?
Jeśli usuniesz klucz interfejsu API używany przez aplikację, wywołania interfejsu API z tej aplikacji przestaną działać. Możesz otrzymywać raporty, e-maile lub błędy, które wskazują, że próbujesz użyć nieprawidłowego klucza API.
Usunięcie klucza interfejsu API jest trwałe i nie można go cofnąć.
Który
„Ograniczenia interfejsów API” wymagają interfejsów API dodać do listy dozwolonych dla klucza interfejsu API Firebase?
W przypadku klucza interfejsu API Firebase są to jedyne interfejsy API, które muszą znajdować się w kluczu
„Ograniczenia interfejsów API” lista dozwolonych to interfejsy API, które wymagają od klienta podania
klucza interfejsu API wraz z wywołaniem. Pamiętaj, że niewiele interfejsów API związanych z Firebase ma tak
. Większość interfejsów API związanych z Firebase włączonych w Twoim projekcie nie musi znajdować się na liście dozwolonych „Ograniczenia interfejsu API” klucza.
Na podstawie poniższej tabeli możesz określić, które interfejsy API związane z Firebase należy uwzględnić na liście dozwolonych w ramach „ograniczeń interfejsu API” dla klucza interfejsu API Firebase. Pamiętaj:
Kluczy interfejsu API Firebase należy używać tylko w przypadku usług Firebase. Więcej informacji o
tworzę
oddzielnych, ograniczonych kluczy API do określonych typów.
Cloud Messaging, Crashlytics, In-App MessagingPerformance Monitoring, Remote Config, Firebase ML
firebaseappcheck.googleapis.com
Interfejs API sprawdzania aplikacji Firebase
App Check
firebaseappdistribution.googleapis.com
Interfejs Firebase App Distribution API
App Distribution
firebaseapptesters.googleapis.com
Interfejs Firebase App Testers API
App Distribution
identitytoolkit.googleapis.com
Identity Toolkit API
Authentication
securetoken.googleapis.com
Token Service API
Authentication
firebaserules.googleapis.com *
Firebase Rules API
Cloud Firestore, Cloud Storage, Realtime Database
datastore.googleapis.com
Cloud Datastore API
Cloud Firestore
firestore.googleapis.com
Google Cloud Firestore API
Cloud Firestore
fcmregistrations.googleapis.com
Interfejs FCM Registration API
Cloud Messaging
firebasestorage.googleapis.com
Interfejs API Cloud Storage dla Firebase
Cloud Storage
firebasedynamiclinks.googleapis.com
Interfejs API Linków dynamicznych Firebase
Dynamic Links
firebasehosting.googleapis.com *
Interfejs Firebase Hosting API
Hosting
firebaseinappmessaging.googleapis.com
Interfejs API Wysyłanie wiadomości w aplikacji Firebase
In-App Messaging
firebaseml.googleapis.com
Firebase ML API
Firebase ML
mlkit.googleapis.com **
ML Kit API
Firebase ML
mobilecrashreporting.googleapis.com
Mobile Crash Reporting API
Performance Monitoring
play.googleapis.com
Google Play Android Developer API
Performance Monitoring
firebaseremoteconfig.googleapis.com
Zdalne konfigurowanie interfejsu API Firebase
Performance Monitoring, Remote Config
firebaseremoteconfigrealtime.googleapis.com
Interfejs Realtime API Zdalnej konfiguracji Firebase
Performance Monitoring, Remote Config
cloudconfig.googleapis.com **
Nie dotyczy
Remote Config
firebasedatabase.googleapis.com *
Interfejs API Bazy danych czasu rzeczywistego Firebase
Realtime Database
firebasevertexai.googleapis.com
Vertex AI w interfejsie Firebase API
Vertex AI in Firebase
* Wymagany tylko wtedy, gdy używasz klucza interfejsu API Firebase na platformie zewnętrznej
narzędzi ani bezpośredniego dostępu typu REST do usługi lub produktu Firebase.
** Wymagany 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 kluczy.
Rozwiązywanie problemów
Jak
usuń błąd 403 lub API_KEY_SERVICE_BLOCKED o braku dostępu
żądania wysyłane 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 kluczy nie zawiera tego interfejsu API.
Jeśli podczas próby skorzystania z usługi spoza Firebase pojawia się ten błąd,
zdecydowanie zalecamy utworzenie nowego klucza interfejsu API przeznaczonego specjalnie dla tej usługi oraz
API. Kluczy API Firebase należy używać tylko w przypadku usług lub produktów Firebase.
Dowiedz się więcej o tworzeniu oddzielnych, ograniczonych kluczy API dla określonych typów interfejsów API.
Jak naprawić ten błąd? „Nie udało się pobrać identyfikatora pomiaru tej aplikacji Firebase z
serwer”.
Klucz interfejsu API używany przez Twoją aplikację internetową prawdopodobnie ma
„Ograniczenia interfejsów 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 informujący, ż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 ograniczenia klucza interfejsu API, które uniemożliwiają jego dopasowanie do aplikacji próbującej użyć klucza („ograniczenia aplikacji”) lub uniemożliwiają jego użycie w przypadku wywoływanego interfejsu API („ograniczenia interfejsu API”).
Klucz interfejsu API został usunięty z projektu w konsoli Google Cloud.
Nie utworzono klucza interfejsu API dla identyfikatora projektu podanego w pliku lub obiekcie konfiguracji Firebase.
Jednym ze sposobów rozwiązania tego problemu jest pobranie zaktualizowanej wersji
plik lub obiekt konfiguracyjny Firebase,
a następnie zastąp stary plik lub obiekt konfiguracyjny nowym zaktualizowanym plikiem lub nowym obiektem.
Przed wysłaniem pliku konfiguracji do pobrania lub wyświetleniem obiektu konfiguracji w konsoli Firebase sprawdza, czy wymienione klucze API pasują do aplikacji.