查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Richten Sie ein Firebase-Projekt mit der Management-REST-API ein und verwalten Sie es

Die Firebase Management REST API ermöglicht die programmgesteuerte Einrichtung und Verwaltung von Firebase-Projekten, einschließlich der Firebase-Ressourcen und Firebase-Apps eines Projekts.

In dieser Übersicht wird der allgemeine Arbeitsablauf zum Hinzufügen von Firebase-Ressourcen und -Apps zu einem vorhandenen Google Cloud-Projekt beschrieben, das derzeit keine Firebase-Dienste verwendet.

Sie können zu bestimmten Abschnitten dieser Seite springen, wenn Sie nur Folgendes möchten:

Bevor Sie Schritte auf dieser Seite ausführen, vergewissern Sie sich, dass Sie die API aktivieren .

Informationen zur Zugriffsverwaltung für die Firebase Management API finden Sie in der Cloud Identity Access Management (IAM) API-Dokumentation .

Bevor Sie beginnen

Bevor Sie beginnen, müssen Sie die Verwaltungs-API für Ihr Google Cloud-Projekt aktivieren und Ihr Zugriffstoken generieren .

Aktivieren Sie die Management-REST-API für Ihr Google Cloud-Projekt

Falls noch nicht geschehen, müssen Sie die Firebase Management API für die Verwendung mit Ihrem Google Cloud-Projekt aktivieren.

  1. Öffnen Sie die Seite Firebase Management API in der Google APIs-Konsole.
  2. Wählen Sie bei Aufforderung Ihr Google Cloud-Projekt aus.
  3. Klicken Sie auf der Seite Firebase Management API auf Aktivieren.

Generieren Sie Ihr API-Zugriffstoken

Hier ist ein Beispiel für Node.js, das Ihr Zugriffstoken abruft.

Wenn Sie sich nicht in einer Google Cloud-Umgebung befinden, legen Sie zunächst die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS auf den Pfad zu Ihrem Dienstkontoschlüssel fest.

Linux oder macOS

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"

Fenster

Mit PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

Verwenden Sie dann das Firebase Admin SDK, um ein Zugriffstoken von den Anmeldeinformationen Ihres Dienstkontos abzurufen:

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);
      });
}

Suchen Sie den Ressourcennamen Ihres Projekts

Sie finden die Google Cloud-Projekte, die zum Hinzufügen von Firebase-Diensten verfügbar sind.

ANFRAGE

Rufen Sie availableProjects.list . Der Anforderungstext für diesen Aufruf muss leer sein.

Hier ist ein Beispiel für Node.js, um eine Liste verfügbarer Google Cloud-Projekte anzufordern:

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);
  }
}

ERGEBNIS

Der Antworttext eines Aufrufs von availableProjects.list enthält eine Liste von ProjectInfo -Objekten. Wenn die Projektliste zu lang ist, enthält der Antworttext auch ein nextPageToken , das Sie als Abfrageparameter verwenden können, um die nächste Seite mit Projekten abzurufen.

Hier ist ein Beispiel für den Antworttext eines availableProjects.list -Aufrufs:

{
  "projectInfo": [
    {
      "project": "projects/first-cloud-project",
      "displayName": "First Cloud Project"
    },
    {
      "project": "projects/second-cloud-project",
      "displayName": "Second Cloud Project"
    }
  ]
}

Diese Beispielantwort enthält zwei Google Cloud-Projekte, denen Firebase-Dienste hinzugefügt werden können. Beachten Sie, dass das project den global eindeutigen Ressourcennamen für ein Projekt bereitstellt.

Sie können jeden in der Antwort von availableProjects.list aufgelisteten project verwenden, um Ihrem Projekt Firebase-Dienste oder Apps hinzuzufügen .

Im nächsten Abschnitt fügen wir Firebase-Dienste zu First Cloud Project hinzu, indem wir den Ressourcennamen projects/first-gcp-project verwenden.

Fügen Sie Ihrem Projekt Firebase-Dienste hinzu

Google Cloud-Projekte können die von Firebase angebotenen Dienste nutzen. In diesem Abschnitt erfahren Sie, wie Sie Firebase-Dienste programmatisch zu Ihrem bestehenden Google Cloud-Projekt hinzufügen. Beachten Sie, dass Sie Firebase-Dienste auch in der Firebase-Konsole zu Ihrem bestehenden Google Cloud-Projekt hinzufügen können.

ANFRAGE

Rufen Sie projects.addFirebase . Der Anforderungstext für diesen Aufruf muss leer sein.

Hier ist ein Beispiel für Node.js zum Hinzufügen von Firebase-Diensten zu Ihrem Google Cloud-Projekt:

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']);
  }
}

ERGEBNIS

Das Ergebnis eines Aufrufs von projects.addFirebase ist eine Operation . Bevor Sie andere Firebase-bezogene Endpunkte für Ihr Projekt aufrufen können, muss der Vorgang erfolgreich sein.

Um zu überprüfen, ob der Vorgang erfolgreich ist, können Sie operations.get für den Vorgang aufrufen, bis der Wert von done true ist und seine response vom Typ FirebaseProject ist. Wenn der Vorgang fehlschlägt, wird sein error auf google.rpc.Status gesetzt.

Hier ist der Antworttext eines operations.get -Aufrufs:

{
  "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"
    }
  }
}

Da done true ist und der response ein FirebaseProject ist, verfügt das Google Cloud-Projekt jetzt über Firebase-Dienste. Die Antwort enthält auch andere nützliche resources über Ihr neu erstelltes FirebaseProject , wie seine projectNumber und seine Standardressourcen. Der Operation wird nach Abschluss automatisch gelöscht.

Fügen Sie Ihrem Projekt Firebase-Apps hinzu

Viele verschiedene Apps können ein FirebaseProject verwenden, einschließlich iOS-, Android- und Web-Apps. In diesem Abschnitt erfahren Sie, wie Sie Firebase-Apps programmgesteuert zu Ihrem vorhandenen FirebaseProject hinzufügen. Beachten Sie, dass Sie Firebase-Apps auch in der Firebase-Konsole zu Ihrem bestehenden Firebase-Projekt hinzufügen können.

Wählen Sie einen Firebase-App-Typ aus, den Sie Ihrem Firebase-Projekt hinzufügen möchten.

-

Sie können ein vorhandenes Google Analytics-Konto programmgesteuert mit Ihrem vorhandenen FirebaseProject verknüpfen. Beachten Sie, dass Sie Ihr vorhandenes Firebase-Projekt auch auf der Registerkarte „ Integrationen “ Ihrer Projekteinstellungen mit Google Analytics verknüpfen können.

Der Aufruf von projects.addGoogleAnalytics erfordert eine analytics_resource , die entweder eine analyticsAccountId oder eine analyticsPropertyId sein kann:

  • Geben Sie eine vorhandene analyticsAccountId an, um eine neue Google Analytics-Property innerhalb des angegebenen Kontos bereitzustellen und die neue Property mit Ihrem Firebase-Projekt zu verknüpfen.

  • Geben Sie eine vorhandene analyticsPropertyId an, um die Google Analytics-Property Ihrem Firebase-Projekt zuzuordnen.

Sie finden sowohl Ihre analyticsAccountId als auch jede vorhandene analyticsPropertyId auf der Google Analytics-Website .

Wenn Sie projects.addGoogleAnalytics aufrufen:

  1. Die erste Prüfung bestimmt, ob vorhandene Datenströme in der Google Analytics-Property vorhandenen Firebase-Apps in Ihrem FirebaseProject entsprechen (basierend auf dem packageName oder der bundleId , die dem Datenstrom zugeordnet sind). Dann werden ggf. die Datenströme und Apps verknüpft. Beachten Sie, dass diese automatische Verknüpfung nur für Android-Apps und iOS-Apps gilt.

  2. Wenn für Ihre Firebase-Apps keine entsprechenden Datenstreams gefunden werden, werden neue Datenstreams in der Google Analytics-Property für jede Ihrer Firebase-Apps bereitgestellt. Beachten Sie, dass ein neuer Datenstrom immer für eine Webanwendung bereitgestellt wird, auch wenn er zuvor mit einem Datenstrom in Ihrer Analytics-Property verknüpft war.

Erfahren Sie mehr über die Hierarchie und Struktur von Google Analytics-Konten in der Analytics-Dokumentation .

ANFRAGE

Rufen Sie projects.addGoogleAnalytics .

Im Anfragetext für unseren beispielhaften Aufruf von project.addGoogleAnalytics geben wir unser Google Analytics-Konto analyticsAccountId an. Dieser Aufruf stellt eine neue Google Analytics-Property bereit und ordnet die neue Property dem FirebaseProject zu.

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

Hier ist ein Beispiel für Node.js, um ein Firebase-Projekt mit einem Google Analytics-Konto zu verknüpfen:

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']);
  }
}

ERGEBNIS

Das Ergebnis eines Aufrufs von projects.addGoogleAnalytics ist eine Operation . Bevor Sie andere Firebase-bezogene Endpunkte für Ihr Projekt aufrufen können, muss der Vorgang erfolgreich sein.

Um zu überprüfen, ob die Operation erfolgreich ist, können Sie operations.get für die Operation aufrufen, bis der Wert von done true ist und die response vom Typ analyticsDetails ist. Wenn der Vorgang fehlschlägt, wird sein error auf google.rpc.Status gesetzt.

Hier ist der Antworttext eines operations.get -Aufrufs:

{
  "name": "operations/...",
  "none": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
    "analyticsProperty": [
      {
        "id": "...",
        "displayName": "..."
      }
    ],
    "streamMappings": [
      {
        "app": "...",
        "streamId": "...",
        "measurementId": "..."
      }
    ]
  }
}

Da done wahr ist und der response analyticsDetails ist, ist das FirebaseProject jetzt mit dem angegebenen Google Analytics-Konto verknüpft. Der Operation wird nach Abschluss automatisch gelöscht.

Fertigstellen des Standardspeicherorts Ihres Projekts (optional)

Wenn Ihr Firebase-Projekt Cloud Firestore, Cloud Storage oder eine App Engine-App verwendet, können Sie den standardmäßigen Google Cloud Platform (GCP)-Ressourcenspeicherort für Ihr Projekt programmgesteuert abschließen. Beachten Sie, dass Sie auch einen Speicherort in der Firebase-Konsole auswählen können .

Bevor Sie diesen Standort festlegen, sehen Sie sich Standorte für Ihr Projekt auswählen an, um Informationen darüber zu erhalten, welcher Standort für Ihr Projekt am besten geeignet ist. Sie sollten auch projects.availableLocations aufrufen, um eine Liste der gültigen Standorte für Ihr Projekt zurückzugeben, da Ihre Organisationsrichtlinien möglicherweise einschränken, welche Standorte für Ihr Projekt gültig sind, wenn Ihr Projekt Teil einer Google Cloud-Organisation ist.

Durch Aufrufen dieser defaultLocation.finalize Methode wird eine App Engine-Anwendung mit einem standardmäßigen Cloud Storage-Bucket erstellt, der sich an der locationId befindet, die Sie im Anfragetext angeben.

Der standardmäßige GCP-Ressourcenstandort wurde möglicherweise bereits angegeben, wenn das Project bereits über eine App Engine-Anwendung verfügt oder diese defaultLocation.finalize Methode zuvor aufgerufen wurde.

ANFRAGE

Rufen Sie projects.defaultLocation.finalize . So erstellen Sie Ihren Anfragetext:

  • Erforderlich:

    • locationId : Der Ort, an dem Ihre Daten für GCP-Dienste gespeichert werden, die eine Standorteinstellung erfordern, wie Cloud Firestore oder Cloud Storage.
{
  "locationId": "us-west2"
}

Hier ist ein Beispiel für Node.js, um den Standardspeicherort Ihres Projekts abzuschließen:

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']);
  }
}

ERGEBNIS

Das Ergebnis eines Aufrufs von projects.defaultLocation.finalize ist eine Operation . Bevor Sie andere Firebase-bezogene Endpunkte für Ihr Projekt aufrufen können, muss der Vorgang erfolgreich sein.

Um zu überprüfen, ob die Operation erfolgreich ist, können Sie operations.get für die Operation aufrufen, bis der Wert von done true ist und die response vom Typ google.protobuf.Empty ist. Wenn die Operation nicht erfolgreich ist, ist der google.rpc.Status error Der Operation wird nach Abschluss automatisch gelöscht.