L'API Firebase Management REST consente la configurazione e la gestione programmatica 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 non utilizza ancora i servizi Firebase.
Puoi passare a sezioni specifiche di questa pagina se vuoi:
- Aggiungi i servizi Firebase al tuo progetto
- Aggiungi le app Firebase al tuo progetto Firebase
- Collegare il progetto Firebase a un account Google Analytics
Prima di seguire i passaggi descritti in questa pagina, assicurati di abilitare l'API.
Per informazioni sulla gestione dell'accesso per l'API Firebase Management, consulta la documentazione dell'API Cloud Identity Access Management (IAM).
Prima di iniziare
Prima di iniziare, devi attivare l'API Management per il tuo progetto Google Cloud e generare il token di accesso.
Abilitare l'API REST di gestione per il progetto Google Cloud
Se non l'hai ancora fatto, devi abilitare l'API Firebase Management per l'utilizzo 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.
Generare il token di accesso API
Ecco un esempio per Node.js che recupera il 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 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"
Poi, utilizza l'SDK Firebase Admin per ottenere un token di accesso dalle credenziali del tuo service account:
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);
});
}
Trovare il nome della risorsa del progetto
Puoi trovare i progetti Google Cloud 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 di 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 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"
}
]
}
Questa risposta di esempio ha due progetti Google Cloud a cui è possibile aggiungere servizi Firebase. Tieni presente che il campo project
fornisce il nome della risorsa univoco a livello globale 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 i servizi Firebase al tuo progetto
Google Cloud progetti 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 i servizi Firebase al tuo progetto Google Cloud esistente nella console Firebase.
RICHIEDI
Chiama il numero projects.addFirebase
.
Il corpo della richiesta per questa chiamata deve essere vuoto.
Ecco un esempio per Node.js per aggiungere i 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 completata correttamente.
Per verificare se l'operazione è riuscita, puoi chiamare
operations.get
sull'operazione finché il valore di done
non è true
e il relativo response
non è di
tipo FirebaseProject
. 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/...",
"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 dispone dei servizi Firebase. La risposta contiene anche
altre informazioni utili sul FirebaseProject
appena creato, come il suo
projectNumber
e il suo resources
predefinito. Operation
viene eliminato automaticamente
al termine.
Aggiungere le app Firebase al tuo progetto
Molte app diverse possono utilizzare un FirebaseProject
, tra cui app per iOS, Android e web. In questa sezione, imparerai ad aggiungere app Firebase al tuo programma FirebaseProject
esistente in modo programmatico. Tieni presente che puoi anche aggiungere app Firebase al tuo progetto Firebase esistente nella console Firebase.
Seleziona un tipo di app Firebase da aggiungere al progetto Firebase.
iOS+
Puoi aggiungere un'app Firebase per iOS al tuo progetto Firebase esistente.
RICHIEDI
Chiama il numero projects.iosApps.create
.
Ecco come creare il corpo della richiesta:
Obbligatorio:
bundleId
: l'ID bundle canonico dell'app per iOS come appare nell'App Store per iOS.
Facoltativo, ma consigliato:
displayName
: il nome visualizzato dell'app assegnato dall'utente. Questo valore è utile per trovare l'app in un secondo momento nella console Firebase.appStoreId
: l'ID Apple generato automaticamente assegnato alla tua app da Apple. Specifica unappStoreId
se è già stato assegnato da Apple.
Nel corpo della richiesta del nostro esempio, utilizzeremo solo un displayName
e
bundleId
:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
Ecco un esempio per Node.js per aggiungere un'app Firebase per iOS al tuo progetto Firebase:
const fetch = require('node-fetch');
async function addIosApp(projectId, displayName, bundleId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/iosApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'bundleId': bundleId
}),
};
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.iosApps.create
è un
Operation
. Prima di poter chiamare altri endpoint correlati a Firebase per il tuo progetto, l'operazione deve essere completata correttamente.
Per verificare se l'operazione è riuscita, puoi chiamare
operations.get
sull'operazione finché il valore di done
non è true
e il suo response
non è di
tipo IosApp
. 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/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.IosApp",
"name": "projects/first-cloud-project/iosApps/...",
"appId": "...",
"displayName": "My Firebase iOS App",
"projectId": "first-cloud-project",
"bundleId": "com.firebase.ios"
}
}
Poiché done
è true
e il tipo response
è un IosApp
, il
FirebaseProject
ora ha un IosApp
. La risposta contiene anche altre informazioni utili
sulla tua app Firebase per iOS appena creata, come l'appId
univoco di Firebase. Il Operation
viene eliminato automaticamente al termine.
Android
Puoi aggiungere un'app Firebase per Android al tuo progetto Firebase esistente.
RICHIEDI
Chiama il numero projects.androidApps.create
.
Ecco come creare il corpo della richiesta:
Obbligatorio:
packageName
: il nome pacchetto canonico dell'app per Android come apparirebbe in Google Play Console.
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 del nostro esempio, utilizzeremo packageName
e
displayName
:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Ecco un esempio per Node.js per aggiungere un'app Firebase per Android 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
è un
Operation
. Prima di poter chiamare altri endpoint correlati a Firebase per il tuo progetto, l'operazione deve essere completata correttamente.
Per verificare se l'operazione è riuscita, puoi chiamare
operations.get
sull'operazione finché il valore di done
non è true
e il relativo response
non è di
tipo AndroidApp
. 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/...",
"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 response
è un AndroidApp
, il
FirebaseProject
ora ha un AndroidApp
. La risposta contiene anche altre
informazioni utili sulla tua app Firebase per Android appena creata, come l'appId
univoco di Firebase. Il Operation
viene eliminato automaticamente al termine.
Aggiungere 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 name
vuoto.
Il risultato di questa chiamata è un'istanza appena creata di
ShaCertificate
.
Quando chiami projects.androidApps.sha.create
, devi fornire un hash del certificato SHA-1 o SHA-256 valido. Puoi ottenere l'hash SHA del certificato di firma con il comando gradle signingReport
:
./gradlew signingReport
Per ulteriori informazioni, visita la pagina API di Google per Android.
Web
Puoi aggiungere un'app web Firebase al tuo progetto Firebase esistente.
RICHIEDI
Chiama il numero projects.webApps.create
.
Ecco come creare il corpo della richiesta:
Facoltativamente,
displayName
: il nome visualizzato dell'app assegnato dall'utente. Questo valore è utile per trovare la tua app in un secondo momento nella console Firebase.
Non consigliato:
appUrls
: gli URL completi in cui è ospitata l'app. Quando un'app web Firebase è associata a un sito Firebase Hosting, Firebase compila automaticamente questi campi, quindi lasciali vuoti nel corpo della richiesta.
Specificheremo solo un displayName
nel corpo della richiesta per il nostro esempio:
{
"displayName": "My Firebase Web App"
}
Ecco un esempio per Node.js per aggiungere un'app web Firebase al tuo progetto Firebase:
const fetch = require('node-fetch');
async function addWebApp(projectId, displayName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/webApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName
}),
};
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.webApps.create
è un
Operation
. Prima di poter chiamare altri endpoint correlati a Firebase per il tuo progetto, l'operazione deve essere completata correttamente.
Per verificare se l'operazione è riuscita, puoi chiamare
operations.get
sull'operazione finché il valore di done
non è true
e il suo response
non è di
tipo WebApp
. 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/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.WebApp",
"name": "projects/first-cloud-project/webApps/...",
"appId": "...",
"displayName": "My Firebase Web App",
"projectId": "first-cloud-project"
}
}
Poiché done
è true
e il tipo response
è un WebApp
, il
FirebaseProject
ora ha un WebApp
. La risposta contiene anche altre informazioni utili sulla nuova app web Firebase creata, come l'appId
Firebase univoco. Il Operation
viene eliminato automaticamente al termine.
(Facoltativo) Collegare il progetto Firebase a un account Google Analytics
Puoi collegare un account Google Analytics esistente al tuo programma 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 un analytics_resource
,
che può essere un analyticsAccountId
o un analyticsPropertyId
:
Specifica un
analyticsAccountId
esistente per eseguire il provisioning di una nuova proprietà Google Analytics all'interno dell'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). Quindi, a seconda dei casi, gli stream di dati e le app vengono collegati. Tieni presente che questo collegamento automatico si applica solo alle app per Android e iOS.Se non vengono trovati stream di dati corrispondenti per le tue app Firebase, vengono forniti 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 in precedenza era associato a uno stream di dati nella 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
, specificheremo il nostro account Google Analytics analyticsAccountId
. Questa chiamata
provisionerà una nuova proprietà Google Analytics e la assocerà
a FirebaseProject
.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Ecco un esempio per Node.js per 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 correlati a Firebase per il tuo progetto, l'operazione deve essere completata correttamente.
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
è vero e il tipo response
è analyticsDetails
, l'FirebaseProject
è ora collegato all'account Google Analytics specificato. Il
Operation
viene eliminato automaticamente al termine.