Firebase-Projekt mit der Management REST API einrichten und verwalten

Mit der Firebase Management REST API können Firebase-Projekte programmatisch eingerichtet und verwaltet werden, einschließlich der Firebase-Ressourcen und Firebase-Apps eines Projekts.

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

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

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 in der Cloud Identity Access Management (IAM) API-Dokumentation.

Hinweis

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

API-Zugriffstoken generieren

Hier sehen Sie ein Beispiel für Node.js, mit dem Ihr Zugriffstoken abgerufen wird.

Wenn Sie sich nicht in einer Google Cloud-Umgebung befinden, legen Sie zuerst 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"

Windows

Mit PowerShell:

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

Verwenden Sie dann das Firebase Admin SDK, um ein Zugriffstoken aus den Anmeldedaten 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);
      });
}

Ressourcennamen des Projekts ermitteln

Hier finden Sie die Google Cloud-Projekte, die zum Hinzufügen von Firebase-Diensten zur Verfügung stehen.

ANFRAGE

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

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

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

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. Das Feld project enthält den weltweit eindeutigen Ressourcennamen für ein Projekt.

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

Im nächsten Abschnitt fügen wir First Cloud Project Firebase-Dienste mit dem Ressourcennamen projects/first-gcp-project hinzu.

Firebase-Dienste zum Projekt hinzufügen

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

ANFRAGE

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

Hier ist ein Beispiel für Node.js, um Ihrem Google Cloud-Projekt Firebase-Dienste hinzuzufügen:

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 erfolgreich abgeschlossen worden sein.

Wenn Sie prüfen möchten, ob der Vorgang erfolgreich war, können Sie für den Vorgang operations.get aufrufen, bis der Wert von done true und response vom Typ FirebaseProject ist. Wenn der Vorgang fehlschlägt, wird 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 Typ response FirebaseProject ist, hat das Google Cloud-Projekt jetzt Firebase-Dienste. Die Antwort enthält auch weitere nützliche Informationen zu dem neu erstellten FirebaseProject, z. B. projectNumber und Standard-resources. Operation wird nach Abschluss automatisch gelöscht.

Firebase-Apps zum Projekt hinzufügen

Viele verschiedene Apps können eine FirebaseProject verwenden, darunter iOS- und Android-Apps sowie Web-Apps. In diesem Abschnitt erfahren Sie, wie Sie Firebase-Apps programmatisch zu Ihrem vorhandenen FirebaseProject hinzufügen. Sie können Firebase-Apps auch Ihrem vorhandenen Firebase-Projekt in der Firebase-Konsole hinzufügen.

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

Sie können Ihrem bestehenden Firebase-Projekt eine Firebase-Android-App hinzufügen.

ANFRAGE

Rufen Sie projects.androidApps.create an. So erstellen Sie den Anfragetext:

  • Erforderlich:

    • packageName: Der kanonische Paketname der Android-App, wie er in der Google Play Console angezeigt wird.
  • Optional, aber empfohlen:

    • displayName: Der vom Nutzer zugewiesene Anzeigename der App. Dieser Wert ist nützlich, um die App später in der Firebase-Konsole zu finden.

Im Anfragetext verwenden wir packageName und displayName:

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

Hier ist ein Beispiel für Node.js, um Ihrem Firebase-Projekt eine Firebase-Android-App hinzuzufügen:

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

ERGEBNIS

Das Ergebnis eines Aufrufs von projects.androidApps.create ist ein Operation. Bevor Sie andere Firebase-bezogene Endpunkte für Ihr Projekt aufrufen können, muss der Vorgang erfolgreich 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 response vom Typ AndroidApp ist. Wenn der Vorgang fehlschlägt, wird error auf google.rpc.Status gesetzt.

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

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

Da done true ist und der Typ response ein AndroidApp ist, hat FirebaseProject jetzt einen AndroidApp. Die Antwort enthält auch andere nützliche Informationen zu Ihrer neu erstellten Firebase-Android-App, z. B. die eindeutige Firebase-appId. Operation wird nach Abschluss automatisch gelöscht.

SHA-Zertifikate hinzufügen

Sie können jeder vorhandenen Firebase-Android-App SHA-Zertifikate hinzufügen, indem Sie projects.androidApps.sha.create aufrufen. Der Anfragetext für diesen Methodenaufruf muss ein leeres name-Feld enthalten. Das Ergebnis dieses Aufrufs ist eine neu erstellte Instanz von ShaCertificate.

Wenn Sie projects.androidApps.sha.create aufrufen, müssen Sie einen gültigen SHA-1- oder SHA-256-Zertifikat-Hash angeben. Sie können den SHA-Hash Ihres Signaturzertifikats mit dem Befehl „gradle signingReport“ abrufen:

./gradlew signingReport

Weitere Informationen finden Sie unter Google APIs für Android.

Du kannst programmatisch ein vorhandenes Google Analytics-Konto mit deinem vorhandenen FirebaseProject verknüpfen. Sie können Ihr vorhandenes Firebase-Projekt auch in den Projekteinstellungen auf dem Tab Integrationen mit Google Analytics verknüpfen.

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 im angegebenen Konto bereitzustellen und die neue Property mit Ihrem Firebase-Projekt zu verknüpfen.

  • Geben Sie eine vorhandene analyticsPropertyId an, um die Google Analytics-Property mit Ihrem Firebase-Projekt zu verknüpfen.

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

Wenn Sie projects.addGoogleAnalytics anrufen:

  1. Bei der ersten Prüfung wird ermittelt, ob vorhandene Datenstreams in der Google Analytics-Property mit vorhandenen Firebase-Apps in FirebaseProject übereinstimmen (basierend auf dem packageName oder bundleId, das mit dem Datenstream verknüpft ist). Anschließend werden die Datenstreams und Apps gegebenenfalls verknüpft. 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 neue Datenstreams für jede Ihrer Firebase-Apps bereitgestellt. Für eine Webanwendung wird immer ein neuer Datenstream bereitgestellt, auch wenn sie zuvor mit einem Datenstream in Ihrer Analytics-Property verknüpft war.

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

ANFRAGE

Rufen Sie projects.addGoogleAnalytics auf.

Im Anfragetext für unseren Beispielaufruf an project.addGoogleAnalytics geben wir unser Google Analytics-Konto analyticsAccountId an. Durch diesen Aufruf wird eine neue Google Analytics-Property bereitgestellt und mit der FirebaseProject verknüpft.

{
  "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 erfolgreich abgeschlossen worden sein.

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

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 wahr ist und der response-Typ analyticsDetails ist, ist FirebaseProject jetzt mit dem angegebenen Google Analytics-Konto verknüpft. Die Operation wird nach Abschluss automatisch gelöscht.