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.

W tym omówieniu opisano ogólny przepływ pracy związany z dodawaniem zasobów i aplikacji Firebase do istniejącego projektu Google Cloud, który nie korzysta jeszcze z usług Firebase.

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

Zanim wykonasz czynności opisane 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).

Zanim zaczniesz

Zanim zaczniesz, musisz włączyć interfejs Management API w projekcie Google Cloud i wygenerować token dostępu.

Włączanie interfejsu Management API typu REST 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. Kliknij Włącz na stronie interfejsu Firebase Management API.

Generowanie tokena dostępu do interfejsu API

Oto przykład środowiska Node.js, które pobiera Twój token dostępu.

Najpierw, jeśli nie korzystasz z środowiska 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 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ład żądania Node.js z żądaniem 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ż atrybut nextPageToken, którego możesz użyć jako parametru zapytania, aby wyświetlić następną stronę projektów.

Oto przykładowa treść odpowiedzi wywołania 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 dla 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 zasobu First Cloud Project przy użyciu nazwy zasobu projects/first-gcp-project.

Dodaj usługi Firebase do projektu

Google Cloud mogą korzystać z usług oferowanych przez Firebase. Z tej sekcji dowiesz się, jak automatycznie dodawać usługi Firebase do istniejącego projektu Google Cloud. Możesz też dodać usługi Firebase do istniejącego projektu Google Cloud w konsoli Firebase.

WYŚLIJ PROŚBĘ

Zadzwoń pod numer projects.addFirebase. Treść żądania tego wywołania 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 wywołania 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ę udała, możesz wywołać w niej metodę operations.get, dopóki wartość done nie będzie miała true, a jej response 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 utworzonym elemencie FirebaseProject, np. jego projectNumber i domyślna wartość resources. Po zakończeniu Operation zostanie automatycznie usunięty.

Dodaj aplikacje Firebase do projektu

Z FirebaseProject może korzystać wiele różnych aplikacji, w tym aplikacje na iOS i Androida oraz aplikacje internetowe. Z tej sekcji dowiesz się, jak dodać aplikacje Firebase do istniejącej FirebaseProject za pomocą programowania. Możesz też dodać aplikacje Firebase do istniejącego projektu Firebase, korzystając z 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. Aby utworzyć treść żądania:

  • Wymagane:

    • packageName: kanoniczna nazwa pakietu aplikacji na Androida, która będzie widoczna w Konsoli Play.
  • Opcjonalne, ale zalecane:

    • displayName: wyświetlana nazwa 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 tych atrybutów packageName i displayName:

{
  "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 wywołania 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, np. niepowtarzalny appId Firebase. Po zakończeniu pole Operation zostanie automatycznie usunięte.

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 tego wywołania metody musi zawierać puste pole name. Wynikiem tego wywołania jest nowo utworzona instancja ShaCertificate.

Wywołując 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 interfejsów API Google na Androida.

Możesz automatycznie połączyć istniejące konto Google Analytics z dotychczasowym FirebaseProject. 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ę w Google Analytics z projektem Firebase.

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

Gdy zadzwonisz pod numer 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 to łączenie automatyczne dotyczy tylko aplikacji na Androida i iOS.

  2. Jeśli nie znajdziemy odpowiednich strumieni danych dla Twoich aplikacji Firebase, dla każdej z nich zostaną udostępnione w usłudze Google Analytics nowe strumienie danych. Pamiętaj, że dla aplikacji internetowej jest zawsze udostępniany nowy strumień danych, nawet jeśli był on wcześniej powiązany ze strumieniem danych w Twojej usłudze w 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. To wywołanie uruchomi 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łać w projekcie inne punkty końcowe związane z Firebase, operacja musi się zakończyć.

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 wywołania 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ść prawda, a typ response to analyticsDetails, konto FirebaseProject jest teraz połączone z określonym kontem Google Analytics. Po zakończeniu Operation jest automatycznie usuwany.