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

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

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

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

Zanim wykonasz czynności opisane na tej stronie, włącz interfejs API.

Informacje o zarządzaniu dostępem w usłudze Firebase Management API znajdziesz w dokumentacji Cloud Identity and 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 nie masz jeszcze włączonego interfejsu Firebase Management API, musisz go włączyć do użycia w projekcie Google Cloud.

  1. Otwórz stronę Interfejs API zarządzania Firebase w konsoli interfejsów API Google.
  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 kodu Node.js, który pobiera token dostępu.

Jeśli nie jesteś w środowisku Google Cloud, najpierw 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 z danych logowania do 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żesz dodać usługi Firebase.

WYŚLIJ PROŚBĘ

Zadzwoń pod numer availableProjects.list. Treść żądania w tym wywołaniu musi być pusta.

Oto przykładowy kod Node.js służący do żądania listy dostępnych projektów Google Cloud:

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 z wywołania funkcji availableProjects.list zawiera listę obiektów ProjectInfo. Jeśli lista projektów jest zbyt długa, treść odpowiedzi zawiera też parametr nextPageToken, który możesz użyć jako parametr zapytania, aby pobrać kolejną stronę z projektami.

Oto przykład treści 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 projekty Google Cloud, do których można dodać usługi Firebase. Pamiętaj, że pole project zawiera globalnie unikalną nazwę zasobu projektu.

Aby dodać usługi Firebase lub dodać aplikacje do projektu, możesz użyć dowolnej wartości project podanej w odpowiedzi z availableProjects.list.

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 mogą korzystać z usług oferowanych przez Firebase. W tej sekcji dowiesz się, jak dodać usługi Firebase do istniejącego projektu Google Cloud za pomocą programowania. Pamiętaj, że usługi Firebase możesz też dodać do istniejącego projektu Google Cloud w konsoli Firebase.

WYŚLIJ PROŚBĘ

Zadzwoń pod numer projects.addFirebase. Treść żądania w tym wywołaniu musi być pusta.

Oto przykład dodawania usług Firebase do projektu Google Cloud w Node.js:

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

Wynik połączenia z numerem projects.addFirebase to Operation. Zanim będzie można wywoływać inne punkty końcowe związane z Firebase w Twoim projekcie, operacja musi się powieść.

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

Dodawanie aplikacji Firebase do projektu

FirebaseProject może używać wiele różnych aplikacji, w tym aplikacji na iOS, Androida i aplikacji internetowych. Z tej sekcji dowiesz się, jak dodać aplikacje Firebase do istniejącej FirebaseProject za pomocą programowania. Pamiętaj, że aplikacje Firebase możesz też dodać do dotychczasowego projektu Firebase w konsoli Firebase.

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

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

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ść ułatwia późniejsze znalezienie aplikacji w konsoli Firebase.

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

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

Oto przykład kodu Node.js służącego do dodawania aplikacji 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

Wynik połączenia z projects.androidApps.create to Operation. Zanim będzie można wywoływać inne punkty końcowe związane z Firebase w Twoim projekcie, operacja musi się powieść.

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

Dodawanie certyfikatów SHA

Możesz dodać certyfikaty SHA do dowolnej istniejącej aplikacji Firebase na Androida, wywołując funkcję 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 funkcji 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 signingReport w Gradle:

./gradlew signingReport

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

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

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

  • Podaj istniejący analyticsAccountId, aby utworzyć nową usługę Google Analytics na określonym koncie i połączyć ją z projektem Firebase.

  • Podaj istniejący element analyticsPropertyId, aby powiązać usługę Google Analytics z projektem Firebase.

Zarówno analyticsAccountId, jak i istniejące analyticsPropertyId znajdziesz na stronie Google Analytics.

Kiedy dzwonić do projects.addGoogleAnalytics:

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

  2. Jeśli nie znajdziemy odpowiednich strumieni danych dla Twoich aplikacji Firebase, w usłudze w Google Analytics zostaną utworzone nowe strumienie danych dla każdej z nich. Pamiętaj, że nowy strumień danych jest zawsze udostępniany dla aplikacji internetowej, nawet jeśli był wcześniej powiązany 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 ciele żądania w przykładzie wywołania funkcji project.addGoogleAnalytics podajemy konto Google Analytics analyticsAccountId. Ten wywołanie zarezerwuje nową usługę w Google Analytics i powiąże ją z usługą FirebaseProject.

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

Oto przykład połączenia projektu Firebase z kontem Google Analytics za pomocą Node.js:

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

Wynik wywołania projects.addGoogleAnalytics to Operation. Zanim będzie można wywoływać inne punkty końcowe związane z Firebase w Twoim projekcie, operacja musi się powieść.

Aby sprawdzić, czy operacja się powiedzie, możesz wywołać funkcję operations.get w operacji, aż wartość done będzie równa true, a pole response będzie miało typ analyticsDetails. Jeśli operacja się nie powiedzie, wartość error zostanie ustawiona 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, obiekt FirebaseProject jest teraz połączony z wybranym kontem Google Analytics. Po zakończeniu Operation jest automatycznie usuwany.