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