Firebase-Projekt mit der Management REST API einrichten und verwalten

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

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 direkt zu bestimmten Abschnitten auf 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 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 Ihr Zugriffstoken generieren.

Management REST API für Ihr Google Cloud-Projekt aktivieren

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 Console die Seite Firebase Management API.
  2. Wählen Sie bei Aufforderung 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 Sie Ihr Zugriffstoken abrufen können.

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

Ressourcenname Ihres Projekts

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

ANFRAGE

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

Hier ist ein Beispiel für Node.js, um eine Liste der verfügbaren 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 Liste der Projekte 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 sehen Sie 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 einen beliebigen project-Wert aus der Antwort von availableProjects.list verwenden, um Ihrem Projekt Firebase-Dienste oder Apps hinzuzufügen.

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

Firebase-Dienste zu Ihrem 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 Ihrem vorhandenen Google Cloud-Projekt auch in der Firebase Console Firebase-Dienste 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, mit dem Sie Ihrem Google Cloud-Projekt Firebase-Dienste hinzufügen können:

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

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

Firebase-Apps zu Ihrem Projekt hinzufügen

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

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

iOS+

Sie können Ihrem vorhandenen Firebase-Projekt eine Firebase-iOS-App hinzufügen.

ANFRAGE

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

  • Erforderlich:

    • bundleId: Die kanonische Bundle-ID der iOS-App, wie sie im iOS App Store 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.

    • appStoreId: Die automatisch generierte Apple-ID, die Ihrer App von Apple zugewiesen wurde. Geben Sie eine appStoreId an, wenn sie bereits von Apple zugewiesen wurde.

Im Anfragetext für unser Beispiel verwenden wir nur displayName und bundleId:

{
  "displayName": "My Firebase iOS App",
  "bundleId": "com.firebase.ios"
}

Hier ist ein Beispiel für Node.js, mit dem Sie Ihrem Firebase-Projekt eine Firebase-iOS-App hinzufügen können:

const fetch = require('node-fetch');

async function addIosApp(projectId, displayName, bundleId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/iosApps';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'displayName': displayName,
      'bundleId': bundleId
    }),
  };

  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.iosApps.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 für den Vorgang aufrufen, bis der Wert von done true ist und sein response vom Typ IosApp 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.IosApp",
    "name": "projects/first-cloud-project/iosApps/...",
    "appId": "...",
    "displayName": "My Firebase iOS App",
    "projectId": "first-cloud-project",
    "bundleId": "com.firebase.ios"
  }
}

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

Android

Sie können Ihrem vorhandenen 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 für Entwickler angezeigt wird.
  • Optional, aber empfohlen:

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

Im Anfragetext für unser Beispiel verwenden wir packageName und displayName:

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

Hier ist ein Beispiel für Node.js, mit dem Sie Ihrem Firebase-Projekt eine Firebase-Android-App hinzufügen können:

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 für den Vorgang aufrufen, bis der Wert von done true ist und sein response vom Typ AndroidApp 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.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 ein AndroidApp. Die Antwort enthält auch andere nützliche Informationen zu Ihrer neu erstellten Firebase Android-App, z. B. die eindeutige Firebase-appId. Die Operation wird nach Abschluss automatisch gelöscht.

SHA-Zertifikate hinzufügen

Sie können SHA-Zertifikate zu jeder vorhandenen Firebase-Android-App hinzufügen, indem Sie projects.androidApps.sha.create aufrufen. Der Anfragetext für diesen Methodenaufruf muss ein leeres Feld name 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-Zertifikathash angeben. Sie können den SHA-Hash Ihres Signaturzertifikats mit dem Gradle-Befehl signingReport abrufen:

./gradlew signingReport

Weitere Informationen finden Sie unter Google APIs for Android.

Web

Sie können Ihrem vorhandenen Firebase-Projekt eine Firebase-Web-App hinzufügen.

ANFRAGE

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

  • Optional:

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

    • appUrls: Die vollständig qualifizierten URLs, unter denen die App gehostet wird. Wenn eine Firebase-Web-App mit einer Firebase Hosting-Website verknüpft ist, werden diese Felder automatisch von Firebase ausgefüllt. Lassen Sie sie daher im Anfragetext leer.

Wir geben in unserem Beispiel nur ein displayName im Anfragetext an:

{
  "displayName": "My Firebase Web App"
}

Hier ist ein Beispiel für Node.js, mit dem Sie Ihrem Firebase-Projekt eine Firebase-Web-App hinzufügen können:

const fetch = require('node-fetch');

async function addWebApp(projectId, displayName) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/webApps';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'displayName': displayName
    }),
  };

  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.webApps.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 für den Vorgang aufrufen, bis der Wert von done true ist und sein response vom Typ WebApp 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.WebApp",
    "name": "projects/first-cloud-project/webApps/...",
    "appId": "...",
    "displayName": "My Firebase Web App",
    "projectId": "first-cloud-project"
  }
}

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

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

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

  • Geben Sie ein vorhandenes 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 alle vorhandenen analyticsPropertyId finden Sie auf der Google Analytics-Website.

Wenn Sie projects.addGoogleAnalytics anrufen:

  1. Beim ersten Check wird geprüft, ob vorhandene Datenstreams in der Google Analytics-Property mit vorhandenen Firebase-Apps in Ihrem FirebaseProject übereinstimmen (basierend auf der packageName oder bundleId, die mit dem Datenstream verknüpft ist). Anschließend werden die Datenstreams und Apps verknüpft. Diese automatische Verknüpfung gilt nur für Android- und iOS-Apps.

  2. Wenn keine entsprechenden Datenstreams für Ihre Firebase-Apps gefunden werden, werden für jede Ihrer Firebase-Apps neue Datenstreams in der Google Analytics-Property bereitgestellt. Für eine Web-App 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

ANFRAGE

Rufen Sie projects.addGoogleAnalytics an.

Im Anfragebody für unseren Beispielaufruf an project.addGoogleAnalytics geben wir unser Google Analytics-Konto analyticsAccountId an. Bei diesem 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 sein.

Um zu prüfen, ob der Vorgang erfolgreich war, können Sie operations.get für den Vorgang aufrufen, bis der Wert von done true ist und 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 zutrifft und der Typ response analyticsDetails ist, ist FirebaseProject jetzt mit dem angegebenen Google Analytics-Konto verknüpft. Die Operation wird nach Abschluss automatisch gelöscht.