L' API REST di gestione di Firebase consente la configurazione e la gestione a livello di codice dei progetti Firebase, incluse le risorse Firebase e le app Firebase di un progetto.
Questa panoramica descrive il flusso di lavoro generale per aggiungere risorse e app Firebase a un progetto Google Cloud esistente che attualmente non utilizza i servizi Firebase.
Puoi saltare a sezioni specifiche di questa pagina se vuoi solo:
- Aggiungi i servizi Firebase al tuo progetto
- Aggiungi le app Firebase al tuo progetto Firebase
- Collega il tuo progetto Firebase a un account Google Analytics
- Finalizza la posizione predefinita del tuo progetto
Prima di eseguire qualsiasi passaggio in questa pagina, assicurati di abilitare l'API .
Per informazioni sulla gestione dell'accesso per l'API Firebase Management, visita la documentazione dell'API Cloud Identity Access Management (IAM) .
Prima di iniziare
Prima di iniziare, devi abilitare l'API di gestione per il tuo progetto Google Cloud e generare il token di accesso .
Abilita l'API REST di gestione per il tuo progetto Google Cloud
Se non l'hai già fatto, dovrai abilitare l' API di gestione di Firebase per l'utilizzo con il tuo progetto Google Cloud.
- Apri la pagina dell'API di gestione di Firebase nella console delle API di Google.
- Quando richiesto, seleziona il tuo progetto Google Cloud.
- Fai clic su Abilita nella pagina dell'API di gestione di Firebase.
Genera il tuo token di accesso API
Ecco un esempio per Node.js che recupera il tuo token di accesso.
Innanzitutto, se non ti trovi in un ambiente Google Cloud, imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS
sul percorso della chiave del tuo account di servizio.
Linux o macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
finestre
Con PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Quindi, utilizza Firebase Admin SDK per ottenere un token di accesso dalle credenziali del tuo account di servizio:
const admin = require('firebase-admin');
function getAccessToken() {
return admin.credential.applicationDefault().getAccessToken()
.then(accessToken => {
return accessToken.access_token;
})
.catch(err => {
console.error('Unable to get access token');
console.error(err);
});
}
Trova il nome della risorsa del tuo progetto
Puoi trovare i progetti Google Cloud disponibili per l'aggiunta di servizi Firebase.
RICHIESTA
Chiama availableProjects.list
. Il corpo della richiesta per questa chiamata deve essere vuoto.
Ecco un esempio di Node.js per richiedere un elenco di progetti Google Cloud disponibili:
const fetch = require('node-fetch');
async function listProjects() {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/availableProjects';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
const projects = resp['projectInfo'];
console.log('Project total: ' + projects.length);
console.log('');
for (let i in projects) {
const project = projects[i];
console.log('Project ' + i);
console.log('ID: ' + project['project']);
console.log('Display Name: ' + project['displayName']);
console.log('');
}
} catch(err) {
console.error(err);
}
}
RISULTATO
Il corpo della risposta da una chiamata a availableProjects.list
contiene un elenco di oggetti ProjectInfo
. Se l'elenco dei progetti è troppo lungo, il corpo della risposta contiene anche un nextPageToken
che puoi utilizzare come parametro di query per ottenere la pagina successiva dei progetti.
Ecco un esempio del corpo della risposta di una chiamata availableProjects.list
:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
Questa risposta di esempio ha due progetti Google Cloud a cui possono essere aggiunti i servizi Firebase. Si noti che il campo del project
fornisce il nome di risorsa univoco globale per un progetto.
Puoi utilizzare qualsiasi valore del project
elencato nella risposta da availableProjects.list
per aggiungere servizi Firebase o aggiungere app al tuo progetto.
Nella sezione successiva, aggiungeremo i servizi Firebase a First Cloud Project
utilizzando il nome della risorsa projects/first-gcp-project
.
Aggiungi i servizi Firebase al tuo progetto
I progetti Google Cloud possono usufruire dei servizi offerti da Firebase. In questa sezione imparerai come aggiungere i servizi Firebase al tuo progetto Google Cloud esistente in modo programmatico. Tieni presente che puoi anche aggiungere servizi Firebase al tuo progetto Google Cloud esistente nella console Firebase .
RICHIESTA
Chiama projects.addFirebase
. Il corpo della richiesta per questa chiamata deve essere vuoto.
Ecco un esempio di Node.js per aggiungere servizi Firebase al tuo progetto Google Cloud:
const fetch = require('node-fetch');
async function addFirebase(projectId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addFirebase';
const options = {
method: 'POST',
// Use a manual access token here since explicit user access token is required.
headers: {
'Authorization': 'Bearer ' + accessToken,
},
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RISULTATO
Il risultato di una chiamata a projects.addFirebase
è Operation
. Prima di poter chiamare altri endpoint relativi a Firebase per il tuo progetto, l'operazione deve avere esito positivo.
Per verificare se l'operazione ha esito positivo, puoi chiamare operations.get
sull'operazione finché il valore di done
non è true
e la sua response
è di tipo FirebaseProject
. Se l'operazione non riesce, il suo error
viene impostato su google.rpc.Status
.
Ecco il corpo della risposta di una chiamata operations.get
:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.FirebaseProject",
"projectId": "first-cloud-project",
"projectNumber": "...",
"displayName": "First Cloud Project",
"name": "projects/first-cloud-project",
"resources": {
"hostingSite": "first-cloud-project",
"realtimeDatabaseInstance": "first-cloud-project"
}
}
}
Poiché done
è true
e il tipo di response
è un FirebaseProject
, il progetto Google Cloud ora dispone dei servizi Firebase. La risposta contiene anche altre informazioni utili sul FirebaseProject
appena creato, come il suo projectNumber
e le sue resources
predefinite. L' Operation
viene automaticamente eliminata dopo il completamento.
Aggiungi le app Firebase al tuo progetto
Molte app diverse possono utilizzare un FirebaseProject
, inclusi iOS, Android e app Web. In questa sezione imparerai come aggiungere le app Firebase al tuo FirebaseProject
esistente in modo programmatico. Tieni presente che puoi anche aggiungere le app Firebase al tuo progetto Firebase esistente nella console Firebase .
Seleziona un tipo di app Firebase da aggiungere al tuo progetto Firebase.
Puoi aggiungere un'app Firebase per Android al tuo progetto Firebase esistente.
RICHIESTA
Chiama projects.androidApps.create
. Ecco come costruire il corpo della tua richiesta:
Necessario:
-
packageName
: il nome canonico del pacchetto dell'app Android come apparirà nella Console per gli sviluppatori di Google Play.
-
Facoltativo, ma consigliato:
-
displayName
: il nome visualizzato dell'app assegnato dall'utente. Questo valore è utile per trovare la tua app in un secondo momento nella console Firebase .
-
Nel corpo della richiesta per il nostro esempio, useremo packageName
e displayName
:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Ecco un esempio di Node.js per aggiungere un'app Android Firebase al tuo progetto Firebase:
const fetch = require('node-fetch');
async function addAndroidApp(projectId, displayName, packageName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/androidApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'packageName': packageName
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RISULTATO
Il risultato di una chiamata a projects.androidApps.create
è Operation
. Prima di poter chiamare altri endpoint relativi a Firebase per il tuo progetto, l'operazione deve avere esito positivo.
Per verificare se l'operazione ha esito positivo, puoi chiamare operations.get
sull'operazione finché il valore di done
non è true
e la sua response
è di tipo AndroidApp
. Se l'operazione non riesce, il suo error
viene impostato su google.rpc.Status
.
Ecco il corpo della risposta di una chiamata operations.get
:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AndroidApp",
"name": "projects/first-cloud-project/androidApps/...",
"appId": "...",
"displayName": "My Firebase Android App",
"projectId": "first-cloud-project",
"packageName": "com.firebase.android"
}
}
Poiché done
è true
e il tipo di response
è AndroidApp
, FirebaseProject
dispone ora di AndroidApp
. La risposta contiene anche altre informazioni utili sull'app Firebase Android appena creata, come l'unico Firebase appId
. L' Operation
viene automaticamente eliminata dopo il completamento.
Aggiungi certificati SHA
Puoi aggiungere certificati SHA a qualsiasi app Firebase Android esistente chiamando projects.androidApps.sha.create
. Il corpo della richiesta per questa chiamata al metodo deve avere un campo del name
vuoto. Il risultato di questa chiamata è un'istanza di ShaCertificate
appena creata.
Quando si chiama projects.androidApps.sha.create
, è necessario fornire un hash del certificato SHA-1 o SHA-256 valido. Puoi ottenere l'hash SHA del tuo certificato di firma con il comando gradle signingReport
:
./gradlew signingReport
Per ulteriori informazioni, visita le API di Google per Android .
Collega il tuo progetto Firebase a un account Google Analytics (facoltativo)
Puoi collegare un account Google Analytics esistente al tuo FirebaseProject
esistente in modo programmatico. Tieni presente che puoi anche collegare il tuo progetto Firebase esistente a Google Analytics nella scheda Integrazioni delle Impostazioni progetto .
La chiamata a projects.addGoogleAnalytics
richiede analytics_resource
, che può essere analyticsAccountId
o analyticsPropertyId
:
Specifica un
analyticsAccountId
esistente per eseguire il provisioning di una nuova proprietà di Google Analytics all'interno dell'account specificato e associare la nuova proprietà al tuo progetto Firebase.Specifica un
analyticsPropertyId
esistente per associare la proprietà di Google Analytics al tuo progetto Firebase.
Puoi trovare sia il tuo analyticsAccountId
che qualsiasi analyticsPropertyId
esistentePropertyId sul sito web di Google Analytics .
Quando chiami projects.addGoogleAnalytics
:
Il primo controllo determina se eventuali flussi di dati esistenti nella proprietà di Google Analytics corrispondono a eventuali app Firebase esistenti nel tuo
FirebaseProject
(in base alpackageName
obundleId
associato al flusso di dati). Quindi, se applicabile, i flussi di dati e le app vengono collegati. Tieni presente che questo collegamento automatico si applica solo alle app Android e alle app iOS.Se non vengono trovati flussi di dati corrispondenti per le tue app Firebase, nella proprietà Google Analytics vengono forniti nuovi flussi di dati per ciascuna delle tue app Firebase. Tieni presente che viene sempre eseguito il provisioning di un nuovo flusso di dati per un'app Web anche se in precedenza era associato a un flusso di dati nella tua proprietà Analytics.
Ulteriori informazioni sulla gerarchia e sulla struttura degli account Google Analytics nella documentazione di Analytics.
RICHIESTA
Chiama projects.addGoogleAnalytics
.
Nel corpo della richiesta per la nostra chiamata di esempio a project.addGoogleAnalytics
, specificheremo il nostro account Google Analytics analyticsAccountId
. Questa chiamata fornirà una nuova proprietà di Google Analytics e assocerà la nuova proprietà a FirebaseProject
.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Ecco un esempio di Node.js per collegare un progetto Firebase con un account Google Analytics:
const fetch = require('node-fetch');
async function addGoogleAnalytics(projectId, analyticsAccountId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addGoogleAnalytics';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'analyticsAccountId': analyticsAccountId
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RISULTATO
Il risultato di una chiamata a projects.addGoogleAnalytics
è Operation
. Prima di poter chiamare altri endpoint relativi a Firebase per il tuo progetto, l'operazione deve avere esito positivo.
Per verificare se l'operazione ha esito positivo, puoi chiamare operations.get
sull'operazione finché il valore di done
non è true
e la response
è di tipo analyticsDetails
. Se l'operazione non riesce, il suo error
viene impostato su google.rpc.Status
.
Ecco il corpo della risposta di una chiamata operations.get
:
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
Poiché done
è true e il tipo di response
è analyticsDetails
, FirebaseProject
è ora collegato all'account Google Analytics specificato. L' Operation
viene automaticamente eliminata dopo il completamento.
Finalizza la posizione predefinita del tuo progetto (facoltativo)
Se il tuo progetto Firebase utilizzerà Cloud Firestore, Cloud Storage o un'app App Engine, puoi finalizzare la posizione delle risorse Google Cloud Platform (GCP) predefinita per il tuo progetto in modo programmatico. Tieni presente che puoi anche selezionare una posizione nella console Firebase .
Prima di impostare questa posizione, controlla Seleziona le posizioni per il tuo progetto per informazioni su quale posizione è la migliore per il tuo progetto. Dovresti anche chiamare projects.availableLocations
per restituire un elenco delle posizioni valide per il tuo progetto perché se il tuo progetto fa parte di un'organizzazione Google Cloud, le norme della tua organizzazione potrebbero limitare le posizioni valide per il tuo progetto.
La chiamata a questo metodo defaultLocation.finalize
crea un'applicazione App Engine con un bucket di archiviazione cloud predefinito situato nel locationId
fornito nel corpo della richiesta.
La posizione della risorsa GCP predefinita potrebbe essere già stata specificata se il Project
dispone già di un'applicazione App Engine o se questo metodo defaultLocation.finalize
è stato precedentemente chiamato.
RICHIESTA
Chiama projects.defaultLocation.finalize
. Ecco come costruire il corpo della tua richiesta:
Necessario:
-
locationId
: la posizione in cui sono archiviati i tuoi dati per i servizi GCP che richiedono un'impostazione della posizione, come Cloud Firestore o Cloud Storage.
-
{
"locationId": "us-west2"
}
Ecco un esempio per Node.js per finalizzare la posizione predefinita del tuo progetto:
const fetch = require('node-fetch');
async function finalizeProjectLocation(projectId, locationId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/defaultLocation:finalize';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'locationId': locationId
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RISULTATO
Il risultato di una chiamata a projects.defaultLocation.finalize
è Operation
. Prima di poter chiamare altri endpoint relativi a Firebase per il tuo progetto, l'operazione deve avere esito positivo.
Per verificare se l'operazione ha esito positivo puoi chiamare operations.get
sull'operazione fino a quando il valore di done
è true
e la sua response
è di tipo google.protobuf.Empty
. Se l'operazione non va a buon fine, l' error
del corpo della risposta sarà di tipo google.rpc.Status
. L' Operation
viene automaticamente cancellata al termine.