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 i aplikacjami Firebase.

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

Możesz przejść do konkretnych sekcji tej strony, jeśli chcesz:

Zanim wykonasz jakiekolwiek czynności na tej stronie, włącz 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 Management API w projekcie Google Cloudwygenerować 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, aby używać go w projekcie Google Cloud.

  1. Otwórz stronę Firebase Management API w Konsoli interfejsów API Google.
  2. Gdy pojawi się 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 języku Node.js, który pobiera token dostępu.

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

Linux lub macOS

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

Windows

W PowerShell:

$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:

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

Znajdowanie nazwy zasobu projektu

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

WYŚLIJ PROŚBĘ

Zadzwoń pod numer availableProjects.list. Treść żądania w przypadku tego wywołania musi być pusta.

Oto przykład w Node.js, który umożliwia wysłanie żądania listy dostępnych Google Cloudprojektó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 funkcji availableProjects.list zawiera listę obiektów ProjectInfo. Jeśli lista projektów jest zbyt długa, treść odpowiedzi zawiera też parametr 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"
    }
  ]
}

W tym przykładzie odpowiedzi znajdują się 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 projectwartości wymienionej w odpowiedziavailableProjects.list, aby dodać usługi Firebase lub aplikacje do projektu.

W następnej sekcji dodamy usługi Firebase do First Cloud Project, używając nazwy zasobu projects/first-gcp-project.

Dodawanie usług Firebase do projektu

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

WYŚLIJ PROŚBĘ

Zadzwoń pod numer projects.addFirebase. Treść żądania w przypadku tego wywołania musi być pusta.

Oto przykład dla Node.js, który pokazuje, jak dodać usługi Firebase do Google Cloudprojektu:

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 funkcji projects.addFirebase jest Operation. Zanim wywołasz inne punkty końcowe związane z Firebase w swoim projekcie, operacja musi się zakończyć powodzeniem.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w przypadku operacji, dopóki wartość done nie będzie równa true, a jej response nie będzie typu FirebaseProject. Jeśli operacja się nie powiedzie, jej pole error zostanie ustawione na wartość 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 to true, a typ response to FirebaseProject, projekt Google Cloud ma teraz usługi Firebase. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonym FirebaseProject, takie jak jego projectNumber i domyślny resources. Po zakończeniu Operation jest automatycznie usuwany.

Dodawanie aplikacji Firebase do projektu

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

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

iOS+

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

WYŚLIJ PROŚBĘ

Zadzwoń pod numer projects.iosApps.create. Oto jak utworzyć treść żądania:

  • Wymagane:

    • bundleId: kanoniczny identyfikator pakietu aplikacji na iOS, który pojawia się w App Store.
  • 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. Podaj appStoreId, jeśli został już przypisany przez Apple.

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

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

Oto przykład w Node.js, który pokazuje, jak dodać aplikację na iOS Firebase 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 funkcji projects.iosApps.create jest Operation. Zanim wywołasz inne punkty końcowe związane z Firebase w swoim projekcie, operacja musi się zakończyć powodzeniem.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get na operacji, dopóki wartość done nie będzie równa true, a jej response nie będzie typu IosApp. Jeśli operacja się nie powiedzie, jej pole error zostanie ustawione na wartość 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 to true, a typ response to IosApp, FirebaseProject ma teraz IosApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji Firebase na iOS, np. unikalny identyfikator FirebaseappId. Operation jest automatycznie usuwany po zakończeniu.

Android

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

WYŚLIJ PROŚBĘ

Zadzwoń pod numer projects.androidApps.create. Oto jak utworzyć treść żądania:

  • Wymagane:

    • packageName: kanoniczna nazwa pakietu aplikacji na Androida, która będzie widoczna w Konsoli Play.
  • 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 tych wartości: packageNamedisplayName.

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

Oto przykład w Node.js, który pokazuje, jak dodać aplikację 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 funkcji projects.androidApps.create jest Operation. Zanim wywołasz inne punkty końcowe związane z Firebase w swoim projekcie, operacja musi się zakończyć powodzeniem.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w przypadku operacji, dopóki wartość done nie będzie równa true, a jej response nie będzie typu AndroidApp. Jeśli operacja się nie powiedzie, jej pole error zostanie ustawione na wartość 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 to true, a typ response to AndroidApp, FirebaseProject ma teraz AndroidApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji Firebase na Androida, np. unikalny identyfikator Firebase appId. Operation jest automatycznie usuwany po zakończeniu.

Dodawanie certyfikatów SHA

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

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

./gradlew signingReport

Więcej informacji znajdziesz na stronie Interfejsy API Google na Androida.

Sieć

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

WYŚLIJ PROŚBĘ

Zadzwoń pod numer 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.
  • Niezalecane:

    • appUrls: pełne adresy URL, pod którymi hostowana jest 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 podamy tylko displayName:

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

Oto przykład dodawania aplikacji internetowej Firebase do projektu Firebase w Node.js:

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 funkcji projects.webApps.create jest Operation. Zanim wywołasz inne punkty końcowe związane z Firebase w swoim projekcie, operacja musi się zakończyć powodzeniem.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get na operacji, dopóki wartość done nie będzie równa true, a jej response nie będzie typu WebApp. Jeśli operacja się nie powiedzie, jej pole error zostanie ustawione na wartość 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 to true, a typ response to WebApp, element FirebaseProject ma teraz WebApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji internetowej Firebase, np. unikalny identyfikator Firebase appId. Operation jest automatycznie usuwany po zakończeniu.

Możesz połączyć dotychczasowe konto Google Analytics z dotychczasowym kontem FirebaseProject za pomocą kodu. Pamiętaj, że możesz też połączyć dotychczasowy projekt Firebase z Google Analytics na karcie IntegracjeUstawieniach projektu.

Wywołanie funkcji projects.addGoogleAnalytics wymaga podania wartości analytics_resource, która może być wartością analyticsAccountId lub analyticsPropertyId:

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

  • Wskaż istniejącą analyticsPropertyId, aby powiązać usługę Google Analytics z projektem Firebase.

Zarówno analyticsAccountId, jak i wszystkie dotychczasowe analyticsPropertyId znajdziesz w witrynie Google Analytics.

Gdy zadzwonisz pod numer projects.addGoogleAnalytics:

  1. Pierwsze sprawdzenie określa, czy istniejące strumienie danych w usłudze Google Analytics odpowiadają istniejącym aplikacjom Firebase na Twoim koncie FirebaseProject (na podstawie packageName lub bundleId powiązanych ze strumieniem danych). Następnie strumienie danych i aplikacje są łączone (w odpowiednich przypadkach). Pamiętaj, że automatyczne linkowanie dotyczy tylko aplikacji na Androida i iOS.

  2. Jeśli nie zostaną znalezione odpowiednie strumienie danych dla aplikacji Firebase, w usłudze Google Analytics zostaną utworzone nowe strumienie danych dla każdej z aplikacji Firebase. Pamiętaj, że w przypadku aplikacji internetowej zawsze tworzony jest nowy strumień danych, 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Ę

Zadzwoń pod numer projects.addGoogleAnalytics.

W treści żądania w naszym przykładowym wywołaniu project.addGoogleAnalytics podamy nasze konto Google Analytics analyticsAccountId. To wywołanie spowoduje utworzenie nowej usługi w Google Analytics i powiązanie jej z FirebaseProject.

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

Oto przykład w Node.js, który pokazuje, jak połączyć projekt 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 funkcji projects.addGoogleAnalytics jest Operation. Zanim wywołasz inne punkty końcowe związane z Firebase w swoim projekcie, operacja musi się zakończyć powodzeniem.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać funkcję operations.get na operacji, dopóki wartość done nie będzie równa true, a response nie będzie typu analyticsDetails. Jeśli operacja się nie powiedzie, jej pole error zostanie ustawione na wartość 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ż warunek done jest spełniony, a typ response to analyticsDetails, usługa FirebaseProject jest teraz połączona z określonym kontem Google Analytics. Operation jest automatycznie usuwany po zakończeniu.