Catch up on everything we announced at this year's Firebase Summit. Learn more

Ein Firebase-Projekt mit der Management-REST-API einrichten und verwalten

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

Diese Übersicht beschreibt die allgemeinen Workflow - Ressourcen und Anwendungen Firebase zu einem bestehenden hinzufügen Google Cloud - Projekt , das noch keine Firebase - Dienste nutzen.

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

Bevor folgenden irgendwelche Schritte auf dieser Seite, stellen Sie sicher , dass Sie die API ermöglichen .

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

Bevor Sie beginnen

Bevor Sie beginnen, müssen Sie die Management - API ermöglichen für Ihre Google Cloud - Projekt und Ihre Zugriffstoken zu generieren .

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

Wenn Sie nicht bereits haben, müssen Sie das ermöglichen , Firebase Management API für die Verwendung mit Google Cloud - Projekt.

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

Generieren Sie Ihr API-Zugriffstoken

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

Erstens, wenn Sie nicht in einer Google Cloud - Umgebung sind, stellen Sie die GOOGLE_APPLICATION_CREDENTIALS Umgebungsvariable auf den Pfad zu Ihrem Dienstkonto Schlüssel.

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 Ihren Dienstkonto-Anmeldedaten 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);
      });
}

Finden Sie den Ressourcennamen Ihres Projekts

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

ANFRAGE

Call availableProjects.list . Der Anforderungstext 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 von einem Aufruf availableProjects.list enthält eine Liste von ProjectInfo Objekten. Wenn die Liste der Projekte zu lang ist, enthält die Antwort Körper auch eine nextPageToken , die Sie als Abfrageparameter verwenden können , um die nächste Seite von Projekten zu erhalten.

Hier ist ein Beispiel Antwort Körper eines availableProjects.list Anruf:

{
  "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 Bereich der global eindeutigen Ressourcennamen für ein Projekt zur Verfügung stellt.

Sie können eine beliebige verwenden project Wert in der Antwort aufgeführten availableProjects.list auf Firebase Dienste hinzufügen oder Anwendungen hinzufügen zu Ihrem Projekt.

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

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 bestehenden Google Cloud-Projekt Firebase-Dienste programmatisch hinzufügen. Beachten Sie, dass Sie auch Firebase Dienste zu Ihrem bestehenden Google Cloud - Projekt in der hinzufügen Firebase Konsole .

ANFRAGE

Call 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 zu 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 überprüfen , ob die Operation erfolgreich ist, können Sie rufen operations.get auf dem Betrieb , bis der Wert von done ist true und seine response ist vom Typ FirebaseProject . Wenn der Vorgang fehlschlägt, seine error eingestellt ist google.rpc.Status .

Hier ist die Antwort Körper eines operations.get Anruf:

{
  "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 ist true und der response - Typ ist ein FirebaseProject , hat das Google Cloud Projekt jetzt Dienste Firebase. Die Antwort enthält auch andere nützliche Informationen über die neu erstellte FirebaseProject , wie seine projectNumber und die resources . Der Operation wird automatisch nach Beendigung gelöscht.

Firebase-Apps zu Ihrem Projekt hinzufügen

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

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

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

ANFRAGE

Call projects.androidApps.create . So erstellen Sie Ihren Anfragetext:

  • Erforderlich:

    • packageName : Die kanonischen Paketnamen von dem Android - App , wie es in der Google Play Developer - Konsole erscheinen würde.
  • Optional, aber empfohlen:

    • displayName : Der Benutzer zugewiesene Anzeigenamen der App. Dieser Wert ist nützlich für Ihre Anwendung später in der Suche nach Firebase Konsole .

Im Anforderungstext für unser Beispiel werden wir verwenden 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 zu 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 überprüfen , ob die Operation erfolgreich ist, können Sie rufen operations.get auf dem Betrieb , bis der Wert von done ist true und seine response ist vom Typ AndroidApp . Wenn der Vorgang fehlschlägt, seine error eingestellt ist google.rpc.Status .

Hier ist die Antwort Körper eines operations.get Anruf:

{
  "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 ist true und der response ist ein AndroidApp , die FirebaseProject hat jetzt eine AndroidApp . Die Antwort enthält auch andere nützliche Informationen über Ihr neu Firebase Android App erstellt, wie die weltweit einzigartige Firebase appId . Der Operation wird automatisch nach Beendigung gelöscht.

SHA-Zertifikate hinzufügen

Sie können durch den Aufruf von SHA - Zertifikate an jede vorhandene Firebase Android App hinzufügen projects.androidApps.sha.create . Der Antrag Körper für diese Methode Aufruf muss ein leeres hat name Feld. Das Ergebnis dieses Aufrufs ist eine neu erstellte Instanz von ShaCertificate .

Beim Aufruf projects.androidApps.sha.create , benötigen Sie ein gültiges SHA-1 oder SHA-256 Hash - Zertifikat zur Verfügung zu stellen. Sie können den SHA - Hash Ihres Signaturzertifikats mit dem gradle erhalten signingReport Befehl:

./gradlew signingReport

Für weitere Informationen, besuchen Sie Google APIs für Android .

Sie können eine vorhandene Verknüpfung Google Analytics - FirebaseProject Konto , um Ihre bestehenden FirebaseProject programmatisch. Beachten Sie, dass Sie auch Ihr bestehendes Firebase - Projekt von Google Analytics in den Link können Integrationen Registerkarte Ihrer Projekteinstellungen.

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

  • Geben Sie einen vorhandenen analyticsAccountId eine neue Google Analytics - Property im angegebenen Konto und verknüpfen die neue Eigenschaft mit Ihrem Firebase Projekt Bestimmung.

  • Geben Sie eine vorhandene analyticsPropertyId den Google Analytics - Property mit Ihrem Projekt Firebase zu verknüpfen.

Sie können sowohl Ihre finden analyticsAccountId und alle vorhandenen analyticsPropertyId auf der Google Analytics - Website .

Wenn Sie anrufen projects.addGoogleAnalytics :

  1. Die erste Prüfung fest , ob alle vorhandenen Datenströme in der Google Analytics - Eigenschaft entspricht jede vorhandene Firebase Apps in Ihrem FirebaseProject (basierend auf dem packageName oder bundleId mit dem Datenstrom zugeordnet ist ). Anschließend 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 Datenströme gefunden werden, werden für jede Ihrer Firebase-Apps neue Datenströme in der Google Analytics-Property bereitgestellt. Beachten Sie, dass für eine Web-App immer ein neuer Datenstream bereitgestellt wird, auch wenn dieser zuvor in Ihrer Analytics-Property mit einem Datenstream verknüpft war.

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

ANFRAGE

Call projects.addGoogleAnalytics .

Im Anforderungstext für unser Beispiel Aufruf project.addGoogleAnalytics , werden wir unsere Google Analytics - Konto angeben analyticsAccountId . Dieser Anruf wird Bereitstellung ein neues Google Analytics - Property und assoziiert die neue Eigenschaft mit dem 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 zu 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 überprüfen , ob die Operation erfolgreich ist, können Sie rufen operations.get auf dem Betrieb , bis der Wert von done ist true , und die response ist vom Typ analyticsDetails . Wenn der Vorgang fehlschlägt, seine error eingestellt ist google.rpc.Status .

Hier ist die Antwort Körper eines operations.get Anruf:

{
  "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 ist analyticsDetails , die FirebaseProject ist nun mit dem angegebenen Google Analytics - Konto verknüpft. Der Operation wird automatisch nach Beendigung gelöscht.

Fertigstellen des Standardspeicherorts Ihres Projekts (optional)

Wenn Ihr Projekt Firebase Wolke Firestor, Cloud Storage, oder einen App Engine - App verwenden, können Sie den finalisieren Standard Google Cloud Platform (GCP) Ressource Standort für Ihr Projekt programmatisch. Beachten Sie, dass Sie auch einen Ort in der auswählen kann Firebase Konsole .

Vor diesem Ort Einstellung überprüfen Wählen Sie Standorte für Ihr Projekt , um Informationen zu dem Ort am besten für Ihr Projekt ist. Sie sollten auch nennen projects.availableLocations eine Liste der gültigen Standorte für Ihr Projekt zurück , weil , wenn Ihr Projekt Teil einer Google Cloud Organisation ist, dann wird Ihre Organisation Richtlinien einschränken könnten , welche Standorte für Ihr Projekt gültig sind.

Beim Aufruf dieser defaultLocation.finalize Methode erstellt mit einer App Engine - Anwendung Standard - locationId Cloud Storage Eimer in der Lage locationId , dass Sie in der Anfrage Körper.

Der Standard - GCP - Ressource Standort möglicherweise bereits angegeben worden , wenn das Project bereits eine App Engine - Anwendung oder das hat defaultLocation.finalize Verfahren wurde zuvor genannt.

ANFRAGE

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

  • Erforderlich:

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

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

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 zu projects.defaultLocation.finalize ist ein 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 rufen operations.get auf dem Betrieb , bis der Wert von done ist true und seine response ist vom Typ google.protobuf.Empty . Wenn die Operation nicht erfolgreich ist, ist die Antwort Körper error werden vom Typ seinen google.rpc.Status . Der Operation wird automatisch nach Beendigung gelöscht.