Una chiave API è una stringa univoca utilizzata per instradare le richieste al tuo progetto Firebase quando interagisci con Firebase e i servizi Google. Questa pagina descrive le informazioni di base sulle chiavi API nonché le best practice per l'utilizzo e la gestione delle chiavi API con le app Firebase.
Informazioni generali sulle chiavi API e Firebase
Le chiavi API per Firebase sono diverse dalle tipiche chiavi API
A differenza di come vengono generalmente utilizzate le chiavi API, le chiavi API per i servizi Firebase non vengono utilizzate per controllare l'accesso alle risorse di backend ; ciò può essere fatto solo con Firebase Security Rules (per controllare quali utenti possono accedere alle risorse) e App Check (per controllare quali app possono accedere alle risorse).
Di solito, è necessario proteggere meticolosamente le chiavi API (ad esempio, utilizzando un servizio di protezione o impostando le chiavi come variabili di ambiente); tuttavia, è possibile includere le chiavi API per i servizi Firebase nel codice o nei file di configurazione archiviati.
Sebbene le chiavi API per i servizi Firebase siano sicure da includere nel codice, esistono alcuni casi specifici in cui dovresti applicare dei limiti per la tua chiave API; ad esempio, se utilizzi Firebase ML, l'autenticazione Firebase con il metodo di accesso tramite email/password o un'API Google Cloud fatturabile. Scopri di più su questi casi più avanti in questa pagina.
Creazione di chiavi API
Un progetto Firebase può avere molte chiavi API, ma ciascuna chiave API può essere associata a un solo progetto Firebase.
Firebase crea automaticamente le chiavi API per il tuo progetto quando esegui una delle seguenti operazioni:
- Crea un progetto Firebase >
Browser key
creata automaticamente - Crea un'app Apple Firebase >
iOS key
creata automaticamente - Crea un'app Android Firebase >
Android key
creata automaticamente
Puoi anche creare le tue chiavi API nella Google Cloud Console , ad esempio per lo sviluppo o il debug . Ulteriori informazioni su quando questo potrebbe essere consigliato più avanti in questa pagina.
Trovare le chiavi API
Puoi visualizzare e gestire tutte le chiavi API del tuo progetto nel pannello API e servizi > Credenziali in Google Cloud Console.
Puoi anche trovare quale chiave API viene automaticamente abbinata a un'app Firebase nei seguenti luoghi. Per impostazione predefinita, tutte le app Firebase del tuo progetto per la stessa piattaforma (Apple, Android e Web) utilizzeranno la stessa chiave API.
App Apple Firebase : trova la chiave API abbinata automaticamente di un'app nel file di configurazione Firebase,
, nel campoGoogleService-Info.plist API_KEY
.App Android Firebase : trova la chiave API abbinata automaticamente di un'app nel file di configurazione Firebase,
, nel campogoogle-services.json current_key
.App Web Firebase : trova la chiave API abbinata automaticamente di un'app nell'oggetto di configurazione Firebase, nel campo
apiKey
.
Utilizzando una chiave API
Le chiavi API vengono utilizzate per identificare il tuo progetto Firebase quando interagisci con i servizi Firebase/Google. Nello specifico, vengono utilizzati per associare le richieste API al progetto per quota e fatturazione. Sono utili anche per accedere ai dati pubblici.
Ad esempio, puoi utilizzare esplicitamente una chiave API passandone il valore in una chiamata API REST come parametro di query. Questo esempio mostra come potresti effettuare una richiesta all'API di abbreviazione dei collegamenti Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Quando la tua app effettua una chiamata a un'API Firebase, cercherà automaticamente la chiave API del tuo progetto nel file/oggetto di configurazione Firebase. Puoi, tuttavia, impostare le chiavi API utilizzando un meccanismo diverso, incluse le variabili di ambiente.
Applica restrizioni alle chiavi API (consigliato)
Sebbene non sia necessario considerare segreta una chiave API per i servizi Firebase, ci sono alcuni casi specifici (vedi sotto) in cui potresti voler adottare misure aggiuntive per proteggere il tuo progetto dall'uso improprio della chiave API.
Ridurre la quota se si utilizza l'autenticazione basata su password
Se utilizzi l'autenticazione Firebase basata su password e qualcuno entra in possesso della tua chiave API, non sarà in grado di accedere a nessuno dei database del tuo progetto Firebase o ai dati di Cloud Storage purché tali dati siano protetti dalle regole di sicurezza Firebase . Potrebbero, tuttavia, utilizzare la tua chiave API per accedere agli endpoint di autenticazione di Firebase ed effettuare richieste di autenticazione contro il tuo progetto.
Per mitigare la possibilità che qualcuno possa utilizzare in modo improprio una chiave API per tentare un attacco di forza bruta, puoi ridurre la quota predefinita degli endpoint identitytoolkit.googleapis.com
per riflettere le normali aspettative di traffico della tua app. Tieni presente che se riduci questa quota e la tua app acquisisce improvvisamente utenti, potresti ricevere errori di accesso finché non aumenti la quota. Puoi modificare le quote API del tuo progetto in Google Cloud Console .
Utilizza chiavi API separate e limitate per tipi specifici di API
Sebbene le chiavi API utilizzate per i servizi Firebase in genere non debbano essere trattate come segrete, dovresti prendere alcune precauzioni aggiuntive con le chiavi API utilizzate per concedere l'accesso alle API Google Cloud che hai abilitato manualmente.
Se utilizzi un'API Google Cloud (su qualsiasi piattaforma) che non è abilitata automaticamente da Firebase (il che significa che l'hai abilitata tu stesso), dovresti prendere in considerazione la creazione di chiavi API limitate e separate da utilizzare con tali API. Ciò è particolarmente importante se l'API è per un servizio Google Cloud fatturabile.
Ad esempio, se utilizzi le API Cloud Vision di Firebase ML su iOS, dovresti creare chiavi API separate da utilizzare solo per accedere alle API Cloud Vision.
Utilizzando chiavi API limitate e separate per API non Firebase, puoi ruotare o sostituire le chiavi quando necessario e aggiungere ulteriori restrizioni alle chiavi API senza interrompere l'utilizzo dei servizi Firebase.
Queste istruzioni descrivono come creare una chiave API separata e limitata per un'API falsa chiamata Super Service API
.
Passaggio 1: configura le chiavi API esistenti per impedire l'accesso Super Service API
Apri la pagina Credenziali di Google Cloud Console. Quando richiesto, seleziona il tuo progetto.
Per ogni chiave API esistente nell'elenco, apri la vista di modifica.
Nella sezione Restrizioni API , seleziona Limita chiave , quindi aggiungi all'elenco tutte le API a cui desideri che la chiave API abbia accesso. Assicurati di non includere l'API per la quale stai creando una chiave API separata (in questo esempio,
Super Service API
).Quando configuri le restrizioni API di una chiave API, dichiari esplicitamente le API a cui la chiave ha accesso. Per impostazione predefinita, quando nella sezione Restrizioni API è selezionata l' opzione Non limitare la chiave , è possibile utilizzare una chiave API per accedere a qualsiasi API abilitata per il progetto.
Ora, le tue chiavi API esistenti non garantiranno l'accesso Super Service API
, ma ciascuna chiave continuerà a funzionare per tutte le API che hai aggiunto al relativo elenco di restrizioni API .
Passaggio 2: crea e utilizza una nuova chiave API per accedere Super Service API
Ritorna alla pagina Credenziali . Assicurati che il tuo progetto Firebase sia ancora selezionato.
Fai clic su Crea credenziali > Chiave API . Prendi nota della nuova chiave API, quindi fai clic su Limita chiave .
Nella sezione Restrizioni API , seleziona Limita chiave , quindi aggiungi all'elenco solo la
Super Service API
.Questa nuova chiave API garantisce l'accesso solo
Super Service API
.Configura la tua app e i tuoi servizi per utilizzare la nuova chiave API.
Utilizza chiavi API specifiche dell'ambiente (consigliato)
Se configuri progetti Firebase diversi per ambienti diversi, ad esempio gestione temporanea e produzione, è importante che ogni istanza dell'app interagisca con il progetto Firebase corrispondente. Ad esempio, l'istanza dell'app di gestione temporanea non dovrebbe mai comunicare con il tuo progetto Firebase di produzione. Ciò significa anche che la tua app di staging deve utilizzare le chiavi API associate al tuo progetto Firebase di staging.
Per ridurre i problemi che promuovono le modifiche al codice dallo sviluppo allo staging fino alla produzione, invece di includere le chiavi API nel codice stesso, impostale come variabili di ambiente o includile in un file di configurazione.
Tieni presente che se utilizzi Firebase Local Emulator Suite per lo sviluppo insieme a Firebase ML, devi creare e utilizzare una chiave API di solo debug. Le istruzioni per creare questo tipo di chiave si trovano nella documentazione di Firebase ML .
Domande frequenti
Puoi utilizzare una delle seguenti opzioni per determinare quale chiave API è associata alla tua app Firebase:
Console Firebase
Vai a Impostazioni progetto e poi scorri verso il basso fino alla scheda Le tue app .
Seleziona l'app di interesse.
Ottieni il file/oggetto di configurazione Firebase per l'app di interesse, quindi trova la sua chiave API:
Apple : scarica
GoogleService-Info.plist
, quindi trova il campoAPI_KEY
Android : scarica
google-services.json
, trova la configurazione per l'app di interesse (cerca il nome del pacchetto), quindi trova il campocurrent_key
Web : seleziona l'opzione Config , quindi trova il campo
apiKey
CLI di Firebase
Ottieni il file/oggetto di configurazione Firebase per l'app di interesse eseguendo il comando seguente:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (una di):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : l'identificatore univoco assegnato da Firebase per la tua app Firebase ( trova il tuo ID app )
- PLATFORM (una di):
Nella configurazione Firebase stampata dell'app, trova la sua chiave API:
Apple : trova il campo
API_KEY
Android : trova la configurazione per l'app di interesse (cerca il nome del pacchetto), quindi trova il campo
current_key
Web : trova il campo
apiKey
API REST
Ottieni l'
apiKeyId
(l'UID) della chiave API chiamando l'endpoint applicabile per l'app di interesse e quindi passando il valoreapiKeyId
al passaggio successivo.- Apple : chiama
projects.iosApps.get
- Android : chiama
projects.androidApps.get
- Web : chiama
projects.webApps.get
- Apple : chiama
Ottieni la stringa della chiave API chiamando
projects.locations.keys.getKeyString
.Questa
keyString
è lo stesso valore che può essere trovato nell'artefatto di configurazione dell'app ( Apple | Android | Web ).
App Apple Firebase : ogni app ha il proprio file di configurazione e può avere solo una chiave API elencata.
App Android Firebase : tutte le app Android nel progetto Firebase sono elencate nello stesso file di configurazione e per ciascuna app può essere elencata solo una chiave API. Tuttavia, ciascuna app in questo file di configurazione può avere una chiave diversa elencata.
App Web Firebase : ogni app ha il proprio oggetto di configurazione e può avere solo una chiave API elencata.
Tuttavia, puoi utilizzare più chiavi API con un'unica app. Devi fornire un meccanismo affinché la tua app possa accedere a queste altre chiavi API, ad esempio tramite una variabile di ambiente. Il meccanismo per accedere alle altre chiavi API non può dipendere dal fatto che tali chiavi API siano elencate nel file/oggetto di configurazione Firebase.
Quando ottieni per la prima volta il file/oggetto di configurazione Firebase della tua app , Firebase controlla se sono presenti chiavi API esistenti nel tuo progetto che hanno "Limitazioni dell'applicazione" che corrispondono all'app (ad esempio, un ID bundle corrispondente per l'app Apple).
Se Firebase non trova chiavi limitate corrispondenti, elencherà nel file/oggetto di configurazione la iOS key
per le app Apple, la Android key
per le app Android e la Browser key
per le app Web (supponendo che queste chiavi esistano e non hanno "Limitazioni dell'applicazione" che impediscono loro di corrispondere a quell'app).
Sì, puoi eliminare manualmente la chiave API dal file/oggetto di configurazione. Tuttavia, devi fornire qualche altro meccanismo affinché la tua app possa accedere a una chiave API (ad esempio tramite una variabile di ambiente). In caso contrario, qualsiasi chiamata ai servizi Firebase fallirà.
Sì, puoi modificare manualmente un file/oggetto di configurazione per associare una chiave API diversa a un'app.
Tieni presente che se ottieni nuovamente il file/oggetto di configurazione della tua app dalla console, verranno sempre elencate le chiavi API che Firebase abbina automaticamente a tale app . Pertanto, dovrai ripetere le modifiche manuali, se necessario.
No, una chiave API identifica solo un progetto specifico e non può essere spostata su un altro progetto.
Ecco alcune delle cause più comuni di chiavi API non valide:
Alla chiave API sono applicate "Restrizioni chiave API" che la rendono non abbinabile all'app che tenta di utilizzare la chiave ("Restrizioni applicazione") o inutilizzabile per l'API richiamata ("Restrizioni API").
La chiave API è stata eliminata dal progetto in Google Cloud Console.
La chiave API non è stata creata per l'ID progetto elencato nel file/oggetto di configurazione Firebase dell'app.
Un modo per risolvere questo problema è ottenere la versione aggiornata del file/oggetto di configurazione Firebase della tua app , quindi sostituire il vecchio file/oggetto di configurazione con il nuovo file/oggetto aggiornato. Prima di inviare un file di configurazione per il download o visualizzare un oggetto di configurazione nella console, Firebase verifica che le chiavi API elencate corrispondano alle app .
Alla chiave API utilizzata dalla tua app Web probabilmente sono applicate "Restrizioni API" . In questo caso, assicurati che l'API Firebase Management sia nell'elenco delle API consentite.
Se elimini una chiave API utilizzata da un'app, le chiamate API da quell'app non riusciranno. Potresti ricevere segnalazioni, email o errori che indicano che stai tentando di utilizzare una chiave API non valida.
L'eliminazione di una chiave API è permanente e non può essere annullata.