Configurare e gestire un progetto Firebase utilizzando l'API REST Management

L'API REST Firebase Management consente configurazione programmatica e gestione di progetti Firebase, inclusa la gestione Risorse Firebase e app Firebase.

Questa panoramica descrive il flusso di lavoro generale per aggiungere risorse Firebase e di app a un Google Cloud esistente progetto che attualmente non utilizza i servizi Firebase.

Puoi passare a sezioni specifiche di questa pagina se vuoi semplicemente:

Prima di seguire i passaggi di 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 abilitare l'API di gestione per il tuo progetto Google Cloud generare il token di accesso.

Abilita l'API REST Management per il tuo progetto Google Cloud

Se non l'hai già fatto, dovrai attivare il API Firebase Management per utilizzarlo con il tuo progetto Google Cloud.

  1. Apri l'app API Firebase Management nella console API di Google.
  2. Quando richiesto, seleziona il progetto Google Cloud.
  3. Fai clic su Abilita nella pagina dell'API Firebase Management.

Genera il token di accesso API

Ecco un esempio di Node.js che recupera il tuo token di accesso.

Innanzitutto, se non ti trovi in un ambiente Google Cloud, imposta il valore GOOGLE_APPLICATION_CREDENTIALS al percorso del tuo 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 Admin Firebase per ottenere un token di accesso dal tuo servizio credenziali dell'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);
      });
}

Trova il nome risorsa del progetto

Puoi trovare i Google Cloud progetti disponibili per l'aggiunta di servizi Firebase.

RICHIEDI

Chiama 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 ProjectInfo di oggetti strutturati. 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"
    }
  ]
}

Questa risposta di esempio contiene due progetti Google Cloud che possono includere Firebase e servizi aggiuntivi. Tieni presente che il campo project fornisce le risposte globali un nome risorsa univoco per un progetto.

Puoi utilizzare qualsiasi valore project elencato nella risposta da availableProjects.list per aggiungere servizi Firebase oppure 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 sfruttare i servizi offerti da Firebase. Nel in questa sezione, scoprirai come aggiungere i servizi Firebase al tuo account progetto Google Cloud in modo programmatico. Tieni presente che puoi anche aggiungere Firebase al tuo progetto Google Cloud esistente nella console Firebase.

RICHIEDI

Chiama 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 riuscita.

Per verificare se l'operazione è riuscita, puoi chiamare operations.get sull'operazione finché il valore di done non è true e il relativo valore response è di digita FirebaseProject. Se l'operazione non riesce, il relativo error è 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 Il progetto Google Cloud ora include servizi Firebase. La risposta contiene anche altre informazioni utili sui contenuti FirebaseProject appena creati, come projectNumber e il valore predefinito di resources. L'app Operation viene automaticamente eliminati al termine dell'operazione.

Aggiungi app Firebase al progetto

È possibile usare un FirebaseProject diverse app, tra cui iOS, Android e web app. In questa sezione, scoprirai come aggiungere le app Firebase al tuo account FirebaseProject 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.

Puoi aggiungere un'app Firebase per Android al tuo progetto Firebase esistente.

RICHIEDI

Chiama projects.androidApps.create Ecco come creare il corpo della richiesta:

  • Obbligatorio:

    • packageName: il nome canonico del pacchetto dell'app Android come sarebbe vengono visualizzati 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 l'app in un secondo momento nella console Firebase.

Nel corpo della richiesta per il nostro esempio utilizzeremo packageName e displayName:

{
  "displayName": "My Firebase Android App"
  "packageName": "com.firebase.android"
}

Di seguito è riportato un esempio per Node.js per l'aggiunta di un'app Firebase per Android a Firebase progetto:

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 riuscita.

Per verificare se l'operazione è riuscita, puoi chiamare operations.get sull'operazione finché il valore di done non è true e il relativo valore response è di digita AndroidApp. Se l'operazione non riesce, il relativo error è 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 è AndroidApp, il FirebaseProject ora ha un AndroidApp. La risposta contiene anche altre informazioni utili sulla tua app Firebase per Android appena creata, ad esempio il valore appId Firebase univoco. Operation viene eliminato automaticamente dopo completamento.

Aggiungi certificati SHA

Puoi aggiungere certificati SHA a qualsiasi app Firebase per 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 ShaCertificate

Quando chiami projects.androidApps.sha.create, devi fornire un indirizzo valido Hash del certificato SHA-1 o SHA-256. Puoi ottenere l'hash SHA della firma con il comando gradle signingReport:

./gradlew signingReport

Per ulteriori informazioni, visita la pagina API di Google per Android.

Puoi collegare una account Google Analytics al tuo account esistente FirebaseProject in modo programmatico. Tieni presente che puoi anche collegare i tuoi account dal progetto Firebase a Google Analytics nella Integrazioni di Impostazioni progetto.

La chiamata a projects.addGoogleAnalytics richiede analytics_resource, che può essere analyticsAccountId o analyticsPropertyId:

  • Specifica un valore analyticsAccountId esistente per eseguire il provisioning di un nuovo Google Analytics all'interno dell'account specificato e associa la nuova proprietà a progetto Firebase.

  • Specifica un analyticsPropertyId esistente da associare a Google Analytics con il tuo progetto Firebase.

Puoi trovare sia il tuo analyticsAccountId sia eventuali analyticsPropertyId esistenti sul sito web di Google Analytics.

Quando chiami projects.addGoogleAnalytics:

  1. Il primo controllo determina se sono presenti stream di dati esistenti nella Le proprietà Analytics corrispondono a qualsiasi app Firebase esistente nel tuo FirebaseProject (in base ai valori packageName o bundleId associati a lo stream di dati). Poi, 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.

  2. Se non vengono trovati stream di dati corrispondenti per le app Firebase, i nuovi dati il provisioning degli stream viene eseguito nella proprietà Google Analytics per ciascuno dei tuoi Firebase Apps. Tieni presente che viene sempre eseguito il provisioning di un nuovo stream di dati per un Anche se in precedenza era associata a uno stream di dati nel tuo Proprietà Analytics.

Scopri di più sulla gerarchia e sulla struttura degli account Google Analytics nella documentazione di Analytics.

RICHIEDI

Chiama projects.addGoogleAnalytics

Nel corpo della richiesta relativa alla chiamata di esempio a project.addGoogleAnalytics, specificare il nostro account Google Analytics analyticsAccountId. Questa chiamata eseguire il provisioning di una nuova proprietà Google Analytics e associarla a FirebaseProject.

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

Ecco un esempio in cui Node.js può collegare un progetto Firebase a un progetto 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 chiamare altri endpoint relativi a Firebase per il progetto, l'operazione deve successo.

Per verificare se l'operazione è riuscita, puoi chiamare operations.get sul operazione finché il valore di done non è true e response è di tipo analyticsDetails. 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/...",
  "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. Il Operation viene eliminato automaticamente al termine.

Finalizza la località predefinita del progetto (facoltativo)

Se il tuo progetto Firebase utilizzerà Cloud Firestore, Cloud Storage o un'app App Engine, puoi finalizzare la configurazione predefinita di Google Cloud Località della risorsa della piattaforma (Google Cloud) per il tuo progetto in modo programmatico. Tieni presente che puoi anche selezionare una località nella console Firebase.

Prima di impostare questa località, consulta Selezionare le località per i tuoi progetto per informazioni sulla località migliore per del progetto. Devi anche chiamare projects.availableLocations per restituire un elenco delle località valide per il tuo progetto perché, se il progetto appartiene a un'organizzazione Google Cloud, i criteri dell'organizzazione potrebbero limitare le località valide per il progetto.

La chiamata a questo metodo defaultLocation.finalize crea un App Engine con un valore predefinito Cloud Storage bucket situato nel locationId che fornisci nel corpo della richiesta.

La località della risorsa Google Cloud predefinita potrebbe essere già stata specificata se Project ha già un'applicazione App Engine o questa defaultLocation.finalize è stato chiamato in precedenza.

RICHIEDI

Chiama projects.defaultLocation.finalize Ecco come creare il corpo della richiesta:

  • Obbligatorio:

    • locationId: la località in cui sono archiviati i tuoi dati per i servizi Google Cloud che richiedono l'impostazione di una località, come Cloud Firestore o Cloud Storage.
{
  "locationId": "us-west2"
}

Ecco un esempio in cui Node.js può finalizzare la località predefinita del 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 è un Operation Prima di chiamare altri endpoint relativi a Firebase per il progetto, l'operazione deve successo.

Per verificare se l'operazione è riuscita, puoi chiamare operations.get sul operazione finché il valore di done non è true e il relativo response non è di tipo google.protobuf.Empty. Se l'operazione non va a buon fine, il corpo della risposta error sarà di tipo google.rpc.Status. L'app Operation viene automaticamente eliminati al termine dell'operazione.