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

Interfejs API typu REST do zarządzania Firebase umożliwia zautomatyzowaną konfigurację i zarządzanie projektami Firebase, w tym zasobów Firebase i aplikacji Firebase.

W tym omówieniu opisano ogólny przepływ pracy dodawania zasobów Firebase oraz aplikacji na istniejącą Google Cloud projekt który obecnie nie korzysta z usług Firebase.

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

Przed wykonaniem jakichkolwiek czynności opisanych na tej stronie upewnij się, że zostały włączyć interfejs API.

Więcej informacji o zarządzaniu dostępem do interfejsu Firebase Management API znajdziesz na stronie interfejs Cloud Identity Access Management (IAM) API dokumentacji.

Zanim zaczniesz

Zanim zaczniesz, musisz włączyć interfejs API zarządzania w domenie Twój projekt Google Cloud oraz wygeneruj token dostępu.

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

W razie potrzeby włącz Interfejs API zarządzania Firebase do wykorzystania w projekcie Google Cloud.

  1. Otwórz aplikację Interfejs API zarządzania Firebase w konsoli interfejsów API Google.
  2. Gdy pojawi się odpowiedni komunikat, wybierz projekt Google Cloud.
  3. Kliknij Włącz na stronie interfejsu Firebase Management API.

Generowanie tokena dostępu 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 wartość GOOGLE_APPLICATION_CREDENTIALS zmiennej środowiskowej do ścieżki do pliku klucz konta usługi.

Linux lub macOS

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

Windows

Za pomocą PowerShell:

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

Następnie użyj pakietu SDK Firebase Admin, aby uzyskać token dostępu ze swojej usługi. dane logowania na konto:

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 dodać projekty (Google Cloud), do których można dodać Firebase usług Google.

WYŚLIJ PROŚBĘ

Zadzwoń do nas availableProjects.list Treść żądania tego wywołania musi być pusta.

Oto przykład, jak Node.js wysyła żądanie listy dostępnych Google Cloud projekty:

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 wywołania do funkcji availableProjects.list zawiera listę ProjectInfo. obiektów. Jeśli lista projektów jest zbyt długa, treść odpowiedzi zawiera też nextPageToken, którego możesz użyć jako parametru zapytania, aby wyświetlić następną stronę w projektach AI.

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, które mogą korzystać z Firebase dodane do nich usługi. Pamiętaj, że pole project udostępnia globalną unikalną nazwę zasobu projektu.

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

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

Dodaj usługi Firebase do projektu

Google Cloud projektów może korzystać z usług oferowanych przez Firebase. W W tej sekcji dowiesz się, jak dodać usługi Firebase do istniejących Google Cloud projekt w sposób zautomatyzowany. Pamiętaj, że możesz też dodać Firebase, z dotychczasowym projektem Google Cloud w konsoli Firebase.

WYŚLIJ PROŚBĘ

Zadzwoń do nas projects.addFirebase Treść żądania tego wywołania musi być pusta.

Oto przykład, jak Node.js może dodać usługi Firebase do: 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']);
  }
}

WYNIK

Wynikiem wywołania do projects.addFirebase jest Operation Przed Tobą może wywoływać inne punkty końcowe związane z Firebase w projekcie, operacja musi odnieść sukces.

Aby sprawdzić, czy operacja się udała, możesz wywołać operations.get w operacji do momentu, gdy wartość done wynosi true, a jej response wynosi wpisz FirebaseProject. Jeśli operacja się nie uda, jej element error zostanie ustawiony na google.rpc.Status

Oto treść odpowiedzi wywołania 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, więc W Google Cloud projekcie są teraz dostępne usługi Firebase. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonym elemencie FirebaseProject, np. projectNumber i jej domyślna wartość resources. Operation jest automatycznie usunięte po zakończeniu.

Dodaj aplikacje Firebase do projektu

Z FirebaseProject może korzystać wiele różnych aplikacji, m.in. na iOS i Androida oraz w internecie. aplikacji. W tej sekcji dowiesz się, jak dodać aplikacje Firebase do istniejących FirebaseProject automatycznie. Możesz też dodać aplikacje Firebase do z dotychczasowego projektu Firebase w konsoli Firebase.

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

Możesz dodać aplikację Firebase na Androida do istniejącego projektu Firebase.

WYŚLIJ PROŚBĘ

Zadzwoń do nas projects.androidApps.create Aby utworzyć treść żądania:

  • Wymagane:

    • packageName: kanoniczna nazwa pakietu aplikacji na Androida w takiej postaci, w jakiej widoczne w Konsoli Google Play.
  • Opcjonalne, ale zalecane:

    • displayName: wyświetlana nazwa aplikacji przypisana przez użytkownika. Ta wartość to przydatne przy wyszukiwaniu aplikacji później w konsoli Firebase.

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

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

Oto przykład, jak w Node.js dodać aplikację Firebase na Androida do Firebase projekt:

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 do projects.androidApps.create jest Operation Przed Tobą może wywoływać inne punkty końcowe związane z Firebase w projekcie, operacja musi odnieść sukces.

Aby sprawdzić, czy operacja się udała, możesz wywołać operations.get w operacji do momentu, gdy wartość done wynosi true, a jej response wynosi wpisz AndroidApp. Jeśli operacja się nie uda, jej element error zostanie ustawiony na google.rpc.Status

Oto treść odpowiedzi wywołania 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, wartości FirebaseProject ma teraz AndroidApp. Odpowiedź zawiera też inne przydatnych informacji o nowo utworzonej aplikacji Firebase na Androida, takich jak unikalne appId Firebase. Operation jest automatycznie usuwany po do końca.

Dodaj certyfikaty SHA

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

Dzwoniąc pod projects.androidApps.sha.create, musisz podać prawidłowy numer Identyfikator SHA-1 lub certyfikatu SHA-256. Możesz uzyskać hasz SHA swojego podpisu certyfikat za pomocą polecenia Gradle signingReport:

./gradlew signingReport

Więcej informacji znajdziesz na stronie Interfejsy API Google dla platformy na urządzeniu z Androidem.

Możesz połączyć kanał prowadzony przez konto Google Analytics. FirebaseProject w sposób automatyczny. Pamiętaj, że możesz też połączyć istniejące z projektu Firebase do Google Analytics w Integracje na karcie Ustawienia projektu.

Połączenie z projects.addGoogleAnalytics wymaga analytics_resource, które mogą być analyticsAccountId lub analyticsPropertyId:

  • Podaj istniejący analyticsAccountId, aby udostępnić nową wersję Google Analytics usługę na określonym koncie i powiąż nową usługę ze swoim projekt Firebase.

  • Podaj istniejący analyticsPropertyId, aby powiązać z Google Analytics z Twoim projektem Firebase.

Zarówno analyticsAccountId, jak i wszystkie istniejące analyticsPropertyId w Google Analytics

Gdy zadzwonisz pod numer projects.addGoogleAnalytics:

  1. Pierwsza weryfikacja pozwala określić, czy w Google są jakieś strumienie danych Usługa Analytics odpowiada aplikacjom Firebase FirebaseProject (na podstawie pola packageName lub bundleId powiązanego z strumienia danych). Następnie, w zależności od sytuacji, 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, nowe dane strumienie są udostępniane w usłudze w Google Analytics dla każdego z Twoich Aplikacje Firebase. Pamiętaj, że nowy strumień danych jest zawsze udostępniany w przypadku sieci. z aplikacją, nawet jeśli była wcześniej powiązana ze strumieniem danych na Twoim usłudze w Analytics.

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

WYŚLIJ PROŚBĘ

Zadzwoń do nas projects.addGoogleAnalytics

W treści żądania przykładowego wywołania project.addGoogleAnalytics zostanie określić nasze konto Google Analytics analyticsAccountId. Ta rozmowa udostępnić nową usługę w Google Analytics i powiązać ją z FirebaseProject.

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

Oto przykład użycia środowiska Node.js do łączenia projektu Firebase z Google Analytics konto:

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 do projects.addGoogleAnalytics jest Operation Przed Tobą może wywoływać inne punkty końcowe związane z Firebase w projekcie, operacja musi odnieść sukces.

Aby sprawdzić, czy operacja się udała, możesz wywołać funkcję operations.get w do czasu, aż wartość done będzie miała true i response będzie typu analyticsDetails. Jeśli operacja się nie uda, jej element error zostanie ustawiony 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, argument Usługa FirebaseProject jest teraz połączona z podanym kontem Google Analytics. Po zakończeniu kursu Operation zostanie automatycznie usunięty.

Sfinalizuj domyślną lokalizację projektu (opcjonalnie)

Jeśli Twój projekt Firebase będzie używać Cloud Firestore, Cloud Storage lub aplikacji App Engine, możesz sfinalizować domyślną wersję Google Cloud Lokalizacja zasobów platformy (GCP) w swoim projekcie. Pamiętaj, że możesz też wybrać lokalizację w Firebase.

.

Zanim ustawisz tę lokalizację, przeczytaj sekcję Wybierz lokalizacje dla projektu, by dowiedzieć się, jaka lokalizacja do swojego projektu. Zadzwoń też projects.availableLocations zwraca listę prawidłowych lokalizacji projektu, ponieważ jeśli projekt należy do organizacji Google Cloud, Twoje zasady organizacji może ograniczać dostęp do lokalizacji są prawidłowe w Twoim projekcie.

Wywołanie tej metody defaultLocation.finalize powoduje utworzenie App Engine. aplikacja z domyślnym ustawieniem Cloud Storage zasobnik znajduje się w locationId. podany w treści żądania.

Domyślna lokalizacja zasobu GCP mogła już zostać określona, jeśli Project ma już aplikację App Engine lub tę Metoda defaultLocation.finalize została wcześniej wywołana.

WYŚLIJ PROŚBĘ

Zadzwoń do nas projects.defaultLocation.finalize Aby utworzyć treść żądania:

  • Wymagane:

    • locationId: lokalizacja, w której są przechowywane Twoje dane dla usług GCP. które wymagają ustawienia lokalizacji, np. Cloud Firestore lub Cloud Storage
{
  "locationId": "us-west2"
}

Oto przykład, w którym Node.js finalizuje domyślną lokalizację projektu:

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

WYNIK

Wynikiem wywołania do projects.defaultLocation.finalize jest Operation Przed Tobą może wywoływać inne punkty końcowe związane z Firebase w projekcie, operacja musi odnieść sukces.

Aby sprawdzić, czy operacja się udała, możesz wywołać funkcję operations.get na do czasu, aż wartość done będzie miała true i jej response będzie typu google.protobuf.Empty. Jeśli operacja się nie powiedzie, treść odpowiedzi error będzie typu google.rpc.Status. Operation jest automatycznie usunięte po zakończeniu.