Skonfiguruj projekt Firebase i zarządzaj nim za pomocą interfejsu Management REST API

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

W tym omówieniu opisano ogólny proces dodawania zasobów i aplikacji Firebase do istniejącego projektu Google Cloud , który obecnie nie korzysta z usług Firebase.

Możesz przejść do określonych sekcji tej strony, jeśli chcesz tylko:

Przed wykonaniem jakichkolwiek kroków na tej stronie upewnij się, że włączyłeś 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 dla swojego projektu Google Cloud i wygenerować token dostępu .

Włącz interfejs Management REST API dla swojego projektu Google Cloud

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

  1. Otwórz stronę interfejsu Firebase Management API w konsoli interfejsów Google API.
  2. Po wyświetleniu monitu wybierz swój projekt Google Cloud.
  3. Kliknij Włącz na stronie interfejsu Firebase Management API.

Wygeneruj swój token dostępu API

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

Po pierwsze, jeśli nie korzystasz ze ś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"

Okna

Z PowerShellem:

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

Znajdź nazwę zasobu swojego projektu

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

WNIOSEK

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

Oto przykład, w którym Node.js może poprosić o listę 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 availableProjects.list zawiera listę obiektów ProjectInfo . Jeśli lista projektów jest zbyt długa, treść odpowiedzi zawiera również nextPageToken , którego można użyć jako parametru zapytania, aby uzyskać 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 dwa projekty Google Cloud, do których można dodać usługi Firebase. Należy zauważyć, że pole project zawiera globalnie unikatową nazwę zasobu dla projektu.

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

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

Dodaj usługi Firebase do swojego projektu

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

WNIOSEK

Wywołaj projects.addFirebase . Treść żądania dla tego wywołania musi być pusta.

Oto przykład, jak Node.js 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ędzie można wywoływać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi się udać.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get dla operacji, dopóki wartość done nie będzie miała wartości 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 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 to true a typem response jest FirebaseProject , projekt Google Cloud zawiera teraz usługi Firebase. Odpowiedź zawiera również inne przydatne informacje o nowo utworzonym FirebaseProject , takie jak projectNumber i domyślne resources . Operation jest automatycznie usuwana po zakończeniu.

Dodaj aplikacje Firebase do swojego projektu

FirebaseProject może korzystać wiele różnych aplikacji, w tym iOS, Android i aplikacje internetowe. W tej sekcji dowiesz się, jak programowo dodawać aplikacje Firebase do istniejącego projektu FirebaseProject . Pamiętaj, że możesz też dodać aplikacje Firebase do istniejącego 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.

WNIOSEK

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

  • Wymagany:

    • packageName : kanoniczna nazwa pakietu aplikacji na Androida, która będzie wyświetlana w konsoli programisty Google Play.
  • Opcjonalne, ale zalecane:

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

W treści żądania dla naszego przykładu użyjemy packageName i displayName :

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

Oto przykład dla Node.js, jak dodać 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 Operation . Zanim będzie można wywoływać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi się udać.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get na operacji, aż wartość done będzie true i jej response będzie typu AndroidApp . Jeśli operacja się nie powiedzie, jej 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 jest true a typem response jest AndroidApp , FirebaseProject ma teraz AndroidApp . Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji Firebase na Androida, takie jak unikalny identyfikator aplikacji appId . Operation jest automatycznie usuwana po zakończeniu.

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

Wywołując projects.androidApps.sha.create , musisz podać prawidłowy skrót certyfikatu SHA-1 lub SHA-256. Skrót SHA certyfikatu podpisującego można uzyskać za pomocą polecenia gradle signingReport :

./gradlew signingReport

Aby uzyskać więcej informacji, odwiedź interfejsy API Google dla systemu Android .

Istniejące konto Google Analytics można automatycznie połączyć z istniejącym FirebaseProject . Pamiętaj, że możesz też połączyć swój istniejący projekt Firebase z Google Analytics na karcie Integracje w ustawieniach projektu .

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

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

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

Zarówno identyfikator analyticsAccountId , jak i dowolny istniejący identyfikator analyticsPropertyId można znaleźć w witrynie Google Analytics .

Gdy dzwonisz do projects.addGoogleAnalytics :

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

  2. Jeśli nie zostaną znalezione odpowiednie strumienie danych dla Twoich aplikacji Firebase, nowe strumienie danych są udostępniane w usłudze Google Analytics dla każdej z Twoich aplikacji Firebase. 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 Twojej usłudze Analytics.

Dowiedz się więcej o hierarchii i strukturze kont Google Analytics w dokumentacji Analytics .

WNIOSEK

Zadzwoń do projects.addGoogleAnalytics .

W treści żądania naszego przykładowego wywołania project.addGoogleAnalytics określimy nasze konto Google Analytics analyticsAccountId . To wywołanie spowoduje udostępnienie nowej usługi Google Analytics i powiązanie nowej usługi z FirebaseProject .

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

Oto przykład, jak Node.js łą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 projects.addGoogleAnalytics jest Operation . Zanim będzie można wywoływać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi się udać.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get na operacji, aż wartość done będzie true i response będzie typu analyticsDetails . Jeśli operacja się nie powiedzie, jej 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 jest prawdą, a typem response jest analyticsDetails , projekt FirebaseProject jest teraz połączony z określonym kontem Google Analytics. Operation jest automatycznie usuwana po zakończeniu.

Sfinalizuj domyślną lokalizację projektu (opcjonalnie)

Jeśli Twój projekt Firebase będzie korzystał z Cloud Firestore, Cloud Storage lub aplikacji App Engine, możesz programowo sfinalizować domyślną lokalizację zasobów Google Cloud Platform (GCP) . Pamiętaj, że możesz także wybrać lokalizację w konsoli Firebase .

Przed ustawieniem tej lokalizacji sprawdź Wybierz lokalizacje dla swojego projektu, aby uzyskać informacje o tym, która lokalizacja jest najlepsza dla Twojego projektu. Wywołaj też projects.availableLocations aby zwrócić listę prawidłowych lokalizacji dla Twojego projektu, ponieważ jeśli Twój projekt jest częścią organizacji Google Cloud, zasady organizacji mogą ograniczać, które lokalizacje są prawidłowe dla Twojego projektu.

Wywołanie tej metody defaultLocation.finalize powoduje utworzenie aplikacji App Engine z domyślnym zasobnikiem Cloud Storage znajdującym się w identyfikatorze locationId podanym w treści żądania.

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

WNIOSEK

Wywołaj projects.defaultLocation.finalize . Oto jak skonstruować treść żądania:

  • Wymagany:

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

Oto przykład dla Node.js, aby sfinalizować 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 projects.defaultLocation.finalize jest Operation . Zanim będzie można wywoływać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi się udać.

Aby sprawdzić, czy operacja się powiodła, możesz wywoływać operations.get dla operacji, dopóki wartość done nie będzie miała wartości true a jej response będzie typu google.protobuf.Empty . Jeśli operacja się nie powiedzie, error treści odpowiedzi będzie miał typ google.rpc.Status . Operation jest automatycznie usuwana po zakończeniu.