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 używany do kierowania żądań do Firebase
przy interakcji z Firebase i usługami Google. Na tej stronie opisujemy
podstawowe informacje o kluczach interfejsu API oraz o sprawdzonych metodach korzystania
i zarządzanie kluczami interfejsu API za pomocą aplikacji Firebase.
Ogólne informacje o kluczach interfejsu API i Firebase
Klucze interfejsu API dla Firebase różnią się od typowych kluczy interfejsu API
W przeciwieństwie do typowego zastosowania kluczy API klucze interfejsu API dla usług Firebase są
nie służy do kontrolowania dostępu do zasobów backendu; jest to możliwe tylko w przypadku,
za pomocą Firebase Security Rules (aby kontrolować, którzy użytkownicy mają dostęp do zasobów) oraz
Firebase App Check (aby kontrolować, które aplikacje mają dostęp do zasobów).
Zwykle musisz szybko zabezpieczyć klucze interfejsu API (na przykład
za pomocą usługi Vault lub ustawiając klucze jako zmienne środowiskowe); jednak
Klucze interfejsu API usług Firebase można uwzględnić w kodzie lub w konfiguracji meldowanej
.
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 – znajdź automatycznie dopasowany klucz interfejsu API w Firebase
config w polu apiKey.
Używanie klucza API
Klucze interfejsu API służą do identyfikowania projektu Firebase podczas interakcji z usługą
usług Firebase/Google. Służą one do powiązania żądań do interfejsu API
w ramach Twojego projektu na potrzeby limitów i płatności. Przydają się też,
do danych publicznych.
Możesz na przykład bezpośrednio użyć klucza interfejsu API, przesyłając jego wartość do funkcji 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 podania klucza interfejsu API.
przez klienta mobilnego/internetowego, aplikacja automatycznie
Plik lub obiekt konfiguracyjny Firebase dla klucza interfejsu API projektu. Możesz jednak
dostarczania kluczy interfejsu API aplikacji za pomocą innego mechanizmu, w tym środowiska
zmiennych.
Przejrzyj klucze interfejsu API i zastosuj do nich odpowiednie ograniczenia (zalecane)
Chociaż nie trzeba traktować klucza interfejsu API usług Firebase jako
tajne, użytkownik powinien sprawdzić i zastosować ograniczenia zgodnie z
.
.
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 Firebase, które
wymaga od klienta podania klucza interfejsu API wraz z wywołaniem. Pamiętaj, że większość
Interfejsy API wymagane do korzystania z usług Firebase nie muszą być
do listy dozwolonych dla kluczy interfejsu API.
Ponieważ Firebase dodaje potrzebne interfejsy API do wszystkich usług Firebase,
lista dozwolonych dla klucza interfejsu API może zawierać interfejsy API usług, których nie używasz.
Możesz usunąć interfejsy API z listy dozwolonych, ale musisz bardzo uważać, aby 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
będzie zwracał błędy przy wykonywaniu wywołań usług Firebase.
Zmniejsz limit, jeśli używasz Authentication opartego na haśle
Jeśli używasz usługi Firebase Authentication opartej na haśle i ktoś uzyska dostęp do Twojego interfejsu API
klucz, nie będą mieć dostępu do żadnej bazy danych projektu Firebase
lub Cloud Storage, jeśli są one 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
do swojego projektu.
Aby zminimalizować ryzyko, że ktoś niewłaściwie użyje klucza interfejsu API do
możesz podjąć próbę ataku brute-force, możesz zwiększyć domyślny limit
identitytoolkit.googleapis.com punktów końcowych do odzwierciedlenia normalnego ruchu
oczekiwania wobec aplikacji. Pamiętaj, że jeśli zmniejszysz ten limit, a aplikacja
nagle pozyskuje użytkowników, mogą występować błędy logowania, dopóki nie zwiększysz limitu.
Limity interfejsu API w projekcie możesz zmienić w
Google Cloud.
Używanie osobnych, ograniczonych kluczy interfejsu API w przypadku każdej usługi spoza Firebase
Mimo że klucze interfejsu API używane przez usługi Firebase zwykle nie muszą być traktowane
jako obiektu tajnego, zastosuj dodatkowe środki ostrożności związane z używanymi kluczami interfejsu API
z innymi interfejsami 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.
Korzystając z oddzielnych, ograniczonych kluczy API dla interfejsów API spoza Firebase, możesz wykonywać rotację lub
w razie potrzeby zastępuj klucze i dodaj dodatkowe ograniczenia do interfejsu API
Klucze
bez zakłócania korzystania z usług Firebase.
Wyświetl instrukcje tworzenia kluczy dla interfejsu API
Te instrukcje opisują, jak utworzyć oddzielny, ograniczony klucz interfejsu API dla
fałszywy interfejs 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ę,
nie dołączaj interfejsu API, dla którego tworzysz oddzielny klucz API.
(w tym przykładzie jest to 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
Sekcja Ograniczenia interfejsów API ma wybraną opcję Nie ograniczaj klucza, czyli klucz interfejsu API.
można używać, aby uzyskać dostęp do dowolnego interfejsu API włączonego w projekcie.
Obecnie Twoje istniejące klucze interfejsu API nie przyznają dostępu do interfejsu Super Service API, ale
każdy klucz będzie nadal działał ze wszystkimi interfejsami API dodanymi do jego
Lista ograniczeń interfejsów API.
Krok 2. Utwórz nowy klucz interfejsu API i użyj go, aby uzyskać dostęp do usługi Super Service API
Wróć do strony Dane logowania.
stronę. Sprawdź, czy projekt Firebase jest nadal wybrany.
Kliknij Utwórz dane logowania > 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 dla różnych środowisk, takich jak
między środowiskami testowymi i produkcyjnymi, ważne jest, aby każda instancja aplikacji współpracowała
odpowiadającego mu projektu Firebase. Na przykład instancja aplikacji testowej powinna
nigdy nie rozmawiać 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 promowaniem zmian w kodzie z procesu programowania na etap przejściowy
w środowisku produkcyjnym, zamiast umieszczać klucze interfejsu API w samym kodzie, ustaw je jako
lub uwzględnij je w pliku konfiguracji.
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
do utworzenia tego rodzaju klucza znajdują się w
Dokumenty: Firebase ML.
Najczęstsze pytania i rozwiązywanie problemów
Najczęstsze pytania
Są kluczami interfejsu API
dla usług Firebase domyślnie ograniczonych?
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
lista 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
. 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.
Ponieważ Firebase dodaje potrzebne interfejsy API do wszystkich usług Firebase,
lista dozwolonych dla klucza interfejsu 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 dotychczasowe i nieograniczone klucze interfejsu API, które Firebase miała
udostępnione wcześniej automatycznie są ograniczone do
lista interfejsów API związanych z Firebaseoraz dowolny z interfejsów API aktualnie włączonych w projekcie.
Wszelkie istniejące i już objęte ograniczeniami klucze interfejsu API, które Firebase używały wcześniej.
automatycznej obsługi administracyjnej nie zostały zmienione.
Żadne istniejące klucze interfejsu API, które nie zostały udostępnione automatycznie przez Firebase, nie zostały
została zmieniona.
.
Jak określić, który klucz interfejsu API
jest powiązane z moją aplikacją Firebase?
Aby określić, który klucz interfejsu API jest
powiązane z Twoją aplikacją Firebase:
Konsola Firebase
Przejdź do: settingsUstawienia projektu,
a potem przewiń w dół do karty Twoje aplikacje.
Wybierz aplikację, która Cię interesuje.
Uzyskaj plik lub obiekt konfiguracyjny Firebase dla interesującej Cię aplikacji, a następnie
znaleźć swój klucz interfejsu API:
Apple: pobierz GoogleService-Info.plist, a potem znajdź
API_KEY pole
Android: pobierz google-services.json, znajdź konfigurację dla
wybraną aplikację (poszukaj nazwy pakietu), a następnie znajdź
current_key pole
Internet: wybierz opcję Konfiguracja i znajdź pole apiKey.
keyString to ta sama wartość, którą można znaleźć w pliku
artefakt konfiguracji
(Apple |
Android |
Sieć).
Czy mogę
mam w mojej konfiguracji Firebase 2 klucze interfejsu API wymienione dla tej samej aplikacji Firebase
plik/obiekt?
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ą
są wymienione w tym samym pliku konfiguracyjnym, a każda aplikacja może mieć tylko 1 klucz interfejsu API
na liście produktów. Każda aplikacja w tym pliku konfiguracyjnym może mieć wymieniony inny klucz,
.
Aplikacje internetowe Firebase – każda aplikacja ma własny obiekt konfiguracji i może mieć tylko
jeden klucz API.
Możesz jednak używać wielu kluczy interfejsu API w jednej aplikacji. Musisz podać
mechanizmu dostępu aplikacji do tych innych kluczy interfejsu API, np.
. Mechanizm dostępu do innych kluczy interfejsu API nie może na nich polegać
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 interfejsu API i pole z mojego pliku lub obiektu konfiguracyjnego Firebase?
Tak, możesz ręcznie usunąć klucz interfejsu API z pliku lub obiektu konfiguracyjnego. Pamiętaj jednak:
musisz udostępnić inny mechanizm dostępu do klucza interfejsu API
(np. za pomocą zmiennej środowiskowej). W przeciwnym razie wywołania usług Firebase
nie powiedzie się.
Czy mogę ręcznie
edytować plik/obiekt konfiguracyjny Firebase za pomocą różnych kluczy interfejsu API?
Tak, możesz ręcznie edytować plik konfiguracyjny lub obiekt, aby powiązać inny klucz interfejsu API
z aplikacją.
Czy mogę przenieść
klucza 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
w projektach AI.
Co się stanie, jeśli
Usunąć klucz interfejsu API wymieniony w konsoli Google Cloud?
Jeśli usuniesz klucz interfejsu API, który jest używany przez aplikację, wywołania interfejsu API z tej aplikacji
nie powiedzie się. Mogą pojawić się raporty, e-maile lub błędy, których próbujesz użyć
klucz interfejsu API, który jest nieprawidłowy.
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 projekcie nie musi być
na „ograniczeniach interfejsu API” klucza lista dozwolonych.
Z tej tabeli dowiesz się, które interfejsy API Firebase wymagają
ujęte w „ograniczeniach interfejsu API” listy dozwolonych 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
Interfejs API usługi Token
Authentication
firebaserules.googleapis.com *
Interfejs Firebase Rules API
Cloud Firestore, Cloud Storage, Realtime Database
datastore.googleapis.com
Interfejs Cloud Datastore API
Cloud Firestore
firestore.googleapis.com
Interfejs 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 Firebase In-App Messaging API
In-App Messaging
firebaseml.googleapis.com
Interfejs API Firebase ML
Firebase ML, Vertex AI in Firebase
mlkit.googleapis.com **
Interfejs 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
Interfejs API Zdalnej konfiguracji 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
* 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 wcześniejszych wersji pakietu SDK usługi. Jeśli używasz
do najnowszej wersji pakietu SDK, interfejs API nie musi znajdować się w kluczu
listy dozwolonych..
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 chcesz otrzymać API_KEY_SERVICE_BLOCKED, postępuj zgodnie ze wskazówkami w tych najczęstszych pytaniach
błąd 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
„Ograniczenia interfejsów API”
a lista dozwolonych klucza 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 interfejsu API Firebase należy używać tylko w przypadku usług i produktów Firebase.
Więcej informacji o tworzeniu
oddzielnych, ograniczonych kluczy API do określonych typów.
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 upewnij się, że interfejs Firebase Management API
znajduje się na liście dozwolonych interfejsów API.
Dotarł do mnie e-mail lub komunikat o błędzie,
Mój klucz interfejsu API jest nieprawidłowy. Co się stało i jak rozwiązać ten problem?
Oto kilka najczęstszych przyczyn nieprawidłowych kluczy interfejsu API:
Klucz interfejsu API zawiera
„Ograniczenia klucza interfejsu API”
który sprawia, że nie można go dopasować do aplikacji próbującej użyć klucza
(„Ograniczenia aplikacji”) lub nie można korzystać z wywoływanego interfejsu API („API”
Ograniczenia”).
Klucz interfejsu API został usunięty z projektu w konsoli Google Cloud.
Nie utworzono klucza interfejsu API dla identyfikatora projektu wymienionego w
Plik lub obiekt konfiguracyjny 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 konfiguracyjnego do pobrania lub wyświetleniem obiektu konfiguracji w
, Firebase sprawdza, czy podane klucze interfejsu API
pasują do aplikacji.