Konfigurowanie projektu Firebase i zarządzanie nim za pomocą interfejsu Management REST API

Interfejs Firebase Management REST API umożliwia programowe konfigurowanie projektów Firebase i zarządzanie nimi, w tym zasobami Firebase projektu i aplikacjami Firebase.

Ten przegląd opisuje ogólny proces dodawania zasobów i aplikacji do istniejącego Google Cloud projektu który nie korzysta jeszcze z usług Firebase.

Jeśli chcesz tylko:

zanim wykonasz jakiekolwiek czynności opisane na tej stronie, upewnij się, że włączysz interfejs API.

Informacje o zarządzaniu dostępem do interfejsu Firebase Management API znajdziesz w dokumentacji interfejsu Cloud Identity Access Management (IAM) API.

Zanim zaczniesz

Zanim zaczniesz, musisz włączyć interfejs API zarządzania Google Analytics dla swojego Google Cloud projektu i wygenerować token dostępu.

Włączanie interfejsu Management REST API w projekcie Google Cloud

Jeśli jeszcze tego nie zrobisz, musisz włączyć interfejs Firebase Management API do użytku z projektem Google Cloud.

  1. Otwórz stronę interfejsu Firebase Management API w konsoli Google APIs.
  2. Gdy pojawi się taka prośba, wybierz projekt Google Cloud.
  3. Na stronie interfejsu Firebase Management API kliknij Włącz.

Generowanie tokena dostępu do interfejsu API

Oto przykład w Node.js, który pobiera token dostępu.

Najpierw, jeśli nie jesteś w środowisku Google Cloud, ustaw zmienną GOOGLE_APPLICATION_CREDENTIALS środowiskową na ścieżkę do klucza konta usługi.

Linux lub macOS

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

Windows

W PowerShellu:

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

Następnie użyj pakietu Firebase Admin SDK, aby uzyskać token dostępu na podstawie danych logowania konta usługi:

import { initializeApp, applicationDefault } from "firebase-admin/app";

initializeApp();

async function getAccessToken() {
  try {
    const accessToken = await applicationDefault().getAccessToken();
    return accessToken.access_token;
  } catch (err) {
    console.error('Unable to get access token');
    console.error(err);
  }
}

Znajdowanie nazwy zasobu projektu

Możesz znaleźć projekty Google Cloud, do których można dodać usługi Firebase.

WYŚLIJ PROŚBĘ

Wywołaj availableProjects.list. Treść żądania w tym wywołaniu musi być pusta.

Oto przykład w Node.js, który wysyła prośbę o listę dostępnych Google Cloud projektów:

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

WYNIK

Treść odpowiedzi na wywołanie availableProjects.list zawiera listę obiektów ProjectInfo. Jeśli lista projektów jest zbyt długa, treść odpowiedzi zawiera też element nextPageToken, którego możesz użyć jako parametru zapytania, aby uzyskać następną stronę projektów.

Oto przykładowa treść odpowiedzi na wywołanie availableProjects.list:

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

Ta przykładowa odpowiedź zawiera 2 Google Cloud projekty, do których można dodać usługi Firebase. Pamiętaj, że pole project zawiera globalnie unikalną nazwę zasobu projektu.

Możesz użyć dowolnej wartości project wymienionej w odpowiedzi na availableProjects.list aby dodać usługi Firebase lub dodać aplikacje do projektu.

W następnej sekcji dodamy usługi Firebase do projektu First Cloud Project za pomocą nazwy zasobu projects/first-gcp-project.

Dodawanie usług Firebase do projektu

Google Cloud projekty mogą korzystać z usług oferowanych przez Firebase. W tej sekcji dowiesz się, jak programowo dodać usługi Firebase do istniejącego Google Cloud projektu. Pamiętaj, że usługi Firebase możesz też dodać do istniejącego projektu Google Cloud w konsoli Firebase.

WYŚLIJ PROŚBĘ

Wywołaj projects.addFirebase. Treść żądania w tym wywołaniu musi być pusta.

Oto przykład w Node.js, który dodaje usługi Firebase do projektu:Google Cloud

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

WYNIK

Wynikiem wywołania projects.addFirebase jest Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w operacji, aż wartość done będzie równa true, a jej response będzie typu FirebaseProject. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony na google.rpc.Status.

Oto treść odpowiedzi na wywołanie operations.get:

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

Ponieważ done ma wartość true, a typ response to FirebaseProject, projekt Google Cloud ma teraz usługi Firebase. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonym projekcie FirebaseProject, takie jak projectNumber i domyślne resources. Po zakończeniu operacja Operation jest automatycznie usuwana.

Dodawanie aplikacji Firebase do projektu

Z projektu FirebaseProject może korzystać wiele różnych aplikacji, w tym aplikacje na iOS, Androida i aplikacje internetowe. W tej sekcji dowiesz się, jak programowo dodać aplikacje Firebase do istniejącego projektu FirebaseProject. Pamiętaj, że aplikacje Firebase możesz też dodać do istniejącego projektu Firebase w Firebase konsoli.

Wybierz typ aplikacji w Firebase, którą chcesz dodać do projektu w Firebase.

iOS+

Do istniejącego projektu w Firebase możesz dodać aplikację Firebase na iOS.

WYŚLIJ PROŚBĘ

Wywołaj projects.iosApps.create. Oto jak utworzyć treść żądania:

  • Wymagane:

    • bundleId: kanoniczny identyfikator pakietu aplikacji na iOS, taki jak w iOS App Store.
  • Rozwiązanie opcjonalne, ale zalecane:

    • displayName: nazwa wyświetlana aplikacji przypisana przez użytkownika. Ta wartość jest przydatna do późniejszego znajdowania aplikacji w Firebase konsoli.

    • appStoreId: automatycznie wygenerowany identyfikator Apple ID przypisany do aplikacji przez Apple. Określ appStoreId, jeśli został już przypisany przez Apple.

W treści żądania w naszym przykładzie użyjemy tylko displayName i bundleId:

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

Oto przykład w Node.js, który dodaje aplikację Firebase na iOS do projektu Firebase:

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

WYNIK

Wynikiem wywołania projects.iosApps.create jest Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w operacji, aż wartość done będzie równa true, a jej response będzie typu IosApp. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony na google.rpc.Status.

Oto treść odpowiedzi na wywołanie operations.get:

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

Ponieważ done ma wartość true, a typ response to IosApp, projekt FirebaseProject ma teraz IosApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji Firebase na iOS, takie jak unikalny identyfikator Firebase appId. Po zakończeniu operacja Operation jest automatycznie usuwana.

Android

Do istniejącego projektu w Firebase możesz dodać aplikację Firebase na Androida.

WYŚLIJ PROŚBĘ

Wywołaj projects.androidApps.create. Oto jak utworzyć treść żądania:

  • Wymagane:

    • packageName: kanoniczna nazwa pakietu aplikacji na Androida, taka jak w Konsoli Google Play.
  • Rozwiązanie opcjonalne, ale zalecane:

    • displayName: nazwa wyświetlana aplikacji przypisana przez użytkownika. Ta wartość jest przydatna do późniejszego znajdowania aplikacji w Firebase konsoli.

W treści żądania w naszym przykładzie użyjemy packageName i displayName:

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

Oto przykład w Node.js, który dodaje aplikację Firebase na Androida do projektu Firebase:

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

WYNIK

Wynikiem wywołania projects.androidApps.create jest an Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w operacji, aż wartość done będzie równa true, a jej response będzie typu AndroidApp. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony na google.rpc.Status.

Oto treść odpowiedzi na wywołanie operations.get:

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

Ponieważ done ma wartość true, a typ response to AndroidApp, projekt FirebaseProject ma teraz AndroidApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji Firebase na Androida, takie jak unikalny identyfikator Firebase appId. Po zakończeniu operacja Operation jest automatycznie usuwana.

Dodawanie certyfikatów SHA

Do dowolnej istniejącej aplikacji Firebase na Androida możesz dodać certyfikaty SHA, wywołując projects.androidApps.sha.create. Treść żądania w tym wywołaniu metody musi zawierać puste pole name. Wynikiem tego wywołania jest nowo utworzona instancja ShaCertificate.

Podczas wywoływania projects.androidApps.sha.create musisz podać prawidłowy skrót certyfikatu SHA-1 lub SHA-256. Skrót SHA certyfikatu podpisywania możesz uzyskać za pomocą polecenia gradle signingReport:

./gradlew signingReport

Więcej informacji znajdziesz w artykule interfejsy API Google na Androida.

Sieć

Do istniejącego projektu w Firebase możesz dodać aplikację internetową Firebase.

WYŚLIJ PROŚBĘ

Wywołaj projects.webApps.create. Oto jak utworzyć treść żądania:

  • Opcjonalnie:

    • displayName: nazwa wyświetlana aplikacji przypisana przez użytkownika. Ta wartość jest przydatna do późniejszego znajdowania aplikacji w Firebase konsoli.
  • Nie zalecane:

    • appUrls: pełne i jednoznaczne adresy URL, pod którymi jest hostowana aplikacja. Gdy aplikacja internetowa Firebase jest powiązana z witryną Firebase Hosting, Firebase automatycznie wypełnia te pola, więc pozostaw je puste w treści żądania.

W treści żądania w naszym przykładzie określimy tylko displayName:

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

Oto przykład w Node.js, który dodaje aplikację internetową Firebase do projektu Firebase:

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

WYNIK

Wynikiem wywołania projects.webApps.create jest Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w operacji, aż wartość done będzie równa true, a jej response będzie typu WebApp. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony na google.rpc.Status.

Oto treść odpowiedzi na wywołanie operations.get:

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

Ponieważ done ma wartość true, a typ response to WebApp, projekt FirebaseProject ma teraz WebApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji internetowej Firebase, takie jak unikalny identyfikator Firebase appId. Po zakończeniu operacja Operation jest automatycznie usuwana.

Możesz programowo połączyć istniejące konto Google Analytics z istniejącym FirebaseProject. Pamiętaj, że istniejący projekt Firebase możesz też połączyć z Google Analytics na karcie Integracje w sekcji Ustawienia projektu.

Wywołanie projects.addGoogleAnalytics wymaga analytics_resource, który może być analyticsAccountId lub analyticsPropertyId:

  • Określ istniejący analyticsAccountId, aby utworzyć nową usługę w Google Analytics na określonym koncie i powiązać ją z projektem w Firebase.

  • Określ istniejący analyticsPropertyId, aby powiązać usługę w Google Analytics z projektem w Firebase.

Zarówno analyticsAccountId, jak i każdy istniejący analyticsPropertyId znajdziesz w witrynie Google Analytics.

Gdy wywołasz projects.addGoogleAnalytics:

  1. Pierwsze sprawdzenie określa, czy istniejące strumienie danych w usłudze Google Analytics odpowiadają istniejącym aplikacjom Firebase w projekcie FirebaseProject (na podstawie packageName lub bundleId powiązanego ze strumieniem danych). Następnie, w zależności od potrzeb, strumienie danych i aplikacje są łączone. Pamiętaj, że to automatyczne łączenie dotyczy tylko aplikacji na Androida i iOS.

  2. Jeśli nie zostaną znalezione żadne odpowiednie strumienie danych dla aplikacji w Firebase, w usłudze w Google Analytics zostaną utworzone nowe strumienie danych dla każdej aplikacji w Firebase. Pamiętaj, że nowy strumień danych jest zawsze tworzony w przypadku aplikacji internetowej, nawet jeśli była ona wcześniej powiązana ze strumieniem danych w usłudze Analytics.

Więcej informacji o hierarchii i strukturze kont Google Analytics znajdziesz w dokumentacji Analytics.

WYŚLIJ PROŚBĘ

Wywołaj projects.addGoogleAnalytics.

W treści żądania w naszym przykładowym wywołaniu project.addGoogleAnalytics określimy nasze konto Google Analytics analyticsAccountId. To wywołanie utworzy nową usługę w Google Analytics i powiąże ją z projektem FirebaseProject.

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

Oto przykład w Node.js, który łączy projekt w Firebase z kontem Google Analytics:

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

WYNIK

Wynikiem wywołania projects.addGoogleAnalytics jest Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w operacji, aż wartość done będzie równa true, a jej response będzie typu analyticsDetails. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony na google.rpc.Status.

Oto treść odpowiedzi na wywołanie operations.get:

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

Ponieważ done ma wartość true, a typ response to analyticsDetails, projekt FirebaseProject jest teraz połączony z określonym kontem Google Analytics. Po zakończeniu operacja Operation jest automatycznie usuwana.