L'API REST Firebase Management consente l'impostazione e la gestione programmatiche dei progetti Firebase, incluse le risorse Firebase di un progetto e le app Firebase.
Questa panoramica descrive il flusso di lavoro generale per aggiungere risorse e app Firebase a un progetto Google Cloud esistente che non utilizza ancora i servizi Firebase.
Puoi passare a sezioni specifiche di questa pagina se vuoi solo:
- Aggiungi servizi Firebase al progetto
- Aggiungi app Firebase al progetto Firebase
- Collegare il progetto Firebase a un account Google Analytics
Prima di seguire qualsiasi passaggio in questa pagina, assicurati di abilitare l'API.
Per informazioni sulla gestione degli accessi per l'API Firebase Management, consulta 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 Management per il tuo progetto Google Cloud
Se non l'hai già fatto, devi abilitare l'API Firebase Management da utilizzare con il tuo progetto Google Cloud.
- Apri la pagina API Firebase Management nella console API di Google.
- Quando richiesto, seleziona il tuo progetto Google Cloud.
- Fai clic su Abilita nella pagina dell'API Firebase Management.
Genera il token di accesso all'API
Ecco un esempio per Node.js che recupera il token di accesso.
Innanzitutto, se non sei in un ambiente Google Cloud, imposta la variabile di ambiente Google Cloud sul percorso della chiave dell'account di servizio.
Linux o macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
Con PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Quindi, utilizza l'SDK Firebase Admin 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 risorsa del progetto
Puoi trovare i Google Cloud progetti disponibili per l'aggiunta di servizi Firebase.
RICHIEDI
Chiama il numero
availableProjects.list
.
Il corpo della richiesta per questa chiamata deve essere vuoto.
Ecco un esempio per 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 valore nextPageToken
che puoi utilizzare come parametro di query per ottenere la pagina successiva dei progetti.
Ecco un esempio di 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"
}
]
}
In questa risposta di esempio sono presenti due progetti Google Cloud a cui è possibile aggiungere servizi Firebase. Tieni presente che il campo project
fornisce il nome della risorsa univoco a livello mondiale per un progetto.
Puoi utilizzare qualsiasi valore project
elencato nella risposta di
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 servizi Firebase al progetto
I progetti Google Cloud possono usufruire dei servizi offerti da Firebase. In questa sezione scoprirai come aggiungere i servizi Firebase al tuo progetto Google Cloud esistente tramite programmazione. Tieni presente che puoi anche aggiungere i servizi Firebase al tuo progetto Google Cloud esistente nella console Firebase.
RICHIEDI
Chiama
projects.addFirebase
.
Il corpo della richiesta per questa chiamata deve essere vuoto.
Di seguito è riportato un esempio in cui Node.js può 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
è un
Operation
. Prima di poter chiamare altri endpoint correlati a Firebase per il tuo progetto, l'operazione deve essere riuscita.
Per verificare se l'operazione è riuscita, puoi chiamare
operations.get
sull'operazione finché il valore di done
non è true
e il suo response
è di
tipo FirebaseProject
. Se l'operazione non va a buon fine, 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 response
è FirebaseProject
, il progetto Google Cloud ora include i servizi Firebase. La risposta contiene anche
altre informazioni utili sull'elemento FirebaseProject
appena creato, come il
projectNumber
e il valore predefinito resources
. Il Operation
viene eliminato automaticamente al termine dell'operazione.
Aggiungere app Firebase al progetto
Molte app diverse possono utilizzare un FirebaseProject
, tra cui app per iOS, Android e web. In questa sezione, scoprirai come aggiungere app Firebase a quelle esistentiFirebaseProject
in modo programmatico. Tieni presente che puoi anche aggiungere app Firebase al progetto Firebase esistente nella console Firebase.
Seleziona un tipo di app Firebase da aggiungere al progetto Firebase.
(Facoltativo) Collegare il progetto Firebase a un account Google Analytics
Puoi collegare un account Google Analytics esistente a FirebaseProject
esistente in modo programmatico. Tieni presente che puoi anche collegare il tuo progetto Firebase esistente a Google Analytics nella scheda Integrazioni di Impostazioni progetto.
La chiamata a projects.addGoogleAnalytics
richiede un analytics_resource
,
che può essere analyticsAccountId
o analyticsPropertyId
:
Specifica un
analyticsAccountId
esistente per eseguire il provisioning di una nuova proprietà Google Analytics nell'account specificato e associa la nuova proprietà al tuo progetto Firebase.Specifica un
analyticsPropertyId
esistente per associare la proprietà Google Analytics al tuo progetto Firebase.
Puoi trovare sia il tuo analyticsAccountId
sia eventuali analyticsPropertyId
esistenti sul sito web di Google Analytics.
Quando chiami projects.addGoogleAnalytics
:
Il primo controllo determina se gli stream di dati esistenti nella proprietà Google Analytics corrispondono ad app Firebase esistenti nel tuo
FirebaseProject
(in base alpackageName
o albundleId
associato allo stream di dati). A questo punto, se applicabile, gli stream di dati e le app vengono collegati. Tieni presente che questo collegamento automatico si applica solo alle app per Android e per iOS.Se non vengono trovati stream di dati corrispondenti per le app Firebase, viene eseguito il provisioning di nuovi stream di dati nella proprietà Google Analytics per ciascuna delle tue app Firebase. Tieni presente che viene sempre eseguito il provisioning di un nuovo stream di dati per un'app web, anche se era precedentemente associata a uno stream di dati nella tua proprietà Analytics.
Scopri di più sulla gerarchia e sulla struttura degli account Google Analytics nella documentazione di Analytics.
RICHIEDI
Chiama il numero
projects.addGoogleAnalytics
.
Nel corpo della richiesta per la nostra chiamata di esempio a project.addGoogleAnalytics
, indicheremo l'account Google Analytics analyticsAccountId
. Questa chiamata effettuerà il provisioning di una nuova proprietà Google Analytics e la associerà al FirebaseProject
.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Ecco un esempio in cui Node.js può collegare un progetto Firebase a 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
è un
Operation
. Prima di poter chiamare altri endpoint relativi a Firebase per il tuo progetto, l'operazione deve essere riuscita.
Per verificare se l'operazione è andata a buon fine, puoi chiamare operations.get
sull'operazione finché il valore di done
non è true
e response
non è di tipo
analyticsDetails
. Se l'operazione non va a buon fine, il relativo 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 response
è analyticsDetails
,
FirebaseProject
ora è collegato all'account Google Analytics specificato. L'elemento Operation
viene eliminato automaticamente al termine dell'operazione.