Firebase-Projekt mit der Management REST API einrichten und verwalten

Die Firebase Management REST API ermöglicht programmatische Einrichtung und Verwaltung von Firebase-Projekten, einschließlich der Firebase-Ressourcen und Firebase-Apps

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

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

Bevor Sie die Schritte auf dieser Seite ausführen, müssen Sie die API aktivieren.

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

Hinweis

Bevor Sie beginnen, müssen Sie die Management API aktivieren für Ihr Google Cloud-Projekt und 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 das Firebase Management API in der Google APIs-Konsole.
  2. Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Google Cloud-Projekt aus.
  3. Klicken Sie auf der Seite „Firebase Management API“ auf Aktivieren.

API-Zugriffstoken generieren

Hier ist ein Beispiel für Node.js, mit dem das Zugriffstoken abgerufen wird.

Wenn Sie sich nicht in einer Google Cloud-Umgebung befinden, legen Sie zuerst GOOGLE_APPLICATION_CREDENTIALS in den Pfad zu Ihrem Dienstkontoschlüssel.

Linux oder macOS

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

Windows

Mit PowerShell:

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

Rufen Sie dann mit dem Firebase Admin SDK ein Zugriffstoken mit den Anmeldedaten Ihres Dienstkontos ab:

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

Ressourcennamen Ihres Projekts finden

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

ANFRAGE

Anruf availableProjects.list Der Anfragetext für diesen Aufruf muss leer sein.

Hier ist ein Beispiel, wie mit Node.js eine Liste der verfügbaren Google Cloud angefordert wird Projekten:

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 Objekte. Wenn die Liste der Projekte zu lang ist, enthält der Antworttext auch einen nextPageToken, den Sie als Suchparameter verwenden können, um die nächste Seite von Projekten.

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, die Firebase haben können welche Dienste hinzugefügt werden. Beachten Sie, dass das Feld project die globale Eindeutiger Ressourcenname für ein Projekt.

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

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

Firebase-Dienste zum Projekt hinzufügen

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

ANFRAGE

Anruf projects.addFirebase Der Anfragetext für diesen Aufruf muss leer sein.

Hier ist ein Beispiel, wie mit Node.js Firebase-Dienste zu Google Cloud hinzugefügt werden können 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 ein Operation Bevor Sie andere Firebase-bezogene Endpunkte für Ihr Projekt aufrufen können, muss der Vorgang um erfolgreich zu sein.

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

So sieht der Antworttext eines operations.get-Aufrufs aus:

{
  "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 und der response-Typ FirebaseProject ist, gilt Folgendes: Das Projekt Google Cloud hat jetzt Firebase-Dienste. Die Antwort enthält auch andere nützliche Informationen zu Ihrer neu erstellten FirebaseProject, z. B. die projectNumber und die Standard-resources. Operation wird automatisch nach Abschluss gelöscht.

Firebase-Apps zum Projekt hinzufügen

FirebaseProject kann in vielen verschiedenen Apps verwendet werden, z. B. in iOS-, Android- und Web-Apps. In diesem Abschnitt erfahren Sie, wie Sie Firebase-Apps FirebaseProject programmatisch. Sie können Firebase-Apps auch Ihrem vorhandenen Firebase-Projekt in der Firebase Console.

Wählen Sie einen Firebase-App-Typ aus, der Ihrem Firebase-Projekt hinzugefügt werden soll.

Sie können eine bestehende Google Analytics-Konto mit Ihrem bestehenden FirebaseProject programmatisch. Sie können auch Ihre vorhandenen mit Google Analytics in der Integrationen Ihrer Projekteinstellungen.

Für den Aufruf von projects.addGoogleAnalytics ist ein analytics_resource erforderlich, Dies kann entweder analyticsAccountId oder analyticsPropertyId sein:

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

  • Geben Sie einen vorhandenen analyticsPropertyId an, der mit Google Analytics verknüpft werden soll mit Ihrem Firebase-Projekt verknüpfen.

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

Wenn du projects.addGoogleAnalytics anrufst:

  1. Bei der ersten Prüfung wird ermittelt, ob Datenstreams in der Google-Suche Analytics-Property den vorhandenen Firebase-Apps in Ihrem FirebaseProject (basierend auf den packageName oder bundleId, die mit Datenstream). Anschließend werden die Datenstreams und Apps gegebenenfalls verknüpft. Hinweis: Diese automatische Verknüpfung gilt nur für Android- und iOS-Apps.

  2. Wenn für Ihre Firebase-Apps keine entsprechenden Datenstreams gefunden werden, werden in der Google Analytics-Property für jede Ihrer Firebase-Apps neue Datenstreams bereitgestellt. Für einen Web-Client wird immer ein neuer Datenstream bereitgestellt. auch wenn sie zuvor mit einem Datenstream in Ihrem Analytics-Property.

Weitere Informationen zur Hierarchie und Struktur von Google Analytics-Konten finden Sie in der Analytics-Dokumentation

ANFRAGE

Anruf projects.addGoogleAnalytics

Im Anfragetext für unseren Beispielaufruf von project.addGoogleAnalytics geben wir geben Sie unser Google Analytics-Konto analyticsAccountId an. Bei diesem Anruf eine neue Google Analytics-Property bereitstellen und die neue Property mit FirebaseProject.

{
  "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 ein Operation Bevor Sie andere Firebase-bezogene Endpunkte für Ihr Projekt aufrufen können, muss der Vorgang um erfolgreich zu sein.

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

So sieht der Antworttext eines operations.get-Aufrufs aus:

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

Da done "true" ist und der response-Typ analyticsDetails ist, gilt Folgendes: FirebaseProject ist jetzt mit dem angegebenen Google Analytics-Konto verknüpft. Die Operation wird nach Abschluss automatisch gelöscht.

Standardspeicherort des Projekts festlegen (optional)

Wenn Ihr Firebase-Projekt Cloud Firestore, Cloud Storage oder einer App Engine-Anwendung haben, können Sie die standardmäßige Google Cloud-Anwendung abschließen Standort der Plattformressourcen (GCP) für Ihr Projekt programmatisch erstellen. Sie können einen Standort auch in der Firebase Console auswählen.

Lesen Sie vor dem Festlegen dieses Standorts den Artikel Standorte für Ihre Kampagne auswählen Projekt finden Sie Informationen dazu, welcher Standort für für Ihr Projekt. Außerdem sollten Sie projects.availableLocations um eine Liste der gültigen Standorte für Ihr Projekt zu erhalten, denn wenn Ihr Projekt gehört zu einer Google Cloud-Organisation, sind Ihre Organisationsrichtlinien kann dies einschränken, die für Ihr Projekt gültig sind.

Wenn Sie diese defaultLocation.finalize-Methode aufrufen, wird eine App Engine-Anwendung mit einem StandardCloud Storage-Bucket im locationId erstellt, den Sie im Anfragetext angeben.

Der standardmäßige GCP-Ressourcenstandort wurde möglicherweise bereits angegeben, wenn die Project hat bereits eine App Engine-Anwendung oder diese Die Methode defaultLocation.finalize wurde bereits aufgerufen.

ANFRAGE

Anruf projects.defaultLocation.finalize So erstellen Sie den Anfragetext:

  • Erforderlich:

    • locationId: Der Standort, an dem Ihre Daten für GCP-Dienste gespeichert werden für die eine Standorteinstellung erforderlich ist, z. B. Cloud Firestore oder Cloud Storage
{
  "locationId": "us-west2"
}

Hier ist ein Beispiel für Node.js, mit dem der Standardspeicherort Ihres Projekts endgültig festgelegt wird:

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 ein Operation Bevor Sie andere Firebase-bezogene Endpunkte für Ihr Projekt aufrufen können, muss der Vorgang um erfolgreich zu sein.

Um zu prüfen, ob der Vorgang erfolgreich war, können Sie operations.get auf der Vorgang, bis der Wert von done true ist und sein response vom Typ ist google.protobuf.Empty Wenn der Vorgang fehlschlägt, wird der Antworttext error ist vom Typ google.rpc.Status. Operation wird automatisch nach Abschluss gelöscht.