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

Interfejs API REST zarządzania Firebase umożliwia programową konfigurację i zarządzanie projektami Firebase, 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 po prostu:

Przed wykonaniem jakichkolwiek kroków na tej stronie upewnij się, że interfejs API jest włączony .

Informacje na temat zarządzania dostępem dla interfejsu Firebase Management API znajdziesz w dokumentacji interfejsu API 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 API REST zarządzania dla swojego projektu Google Cloud

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

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

Wygeneruj 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 poświadczeń 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, które są dostępne do dodawania usług Firebase.

WNIOSEK

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

Oto przykład żądania Node.js dotyczącego 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 availableProjects.list zawiera listę obiektów ProjectInfo . Jeśli lista projektów jest zbyt długa, treść odpowiedzi zawiera także 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 pamiętać, że pole project zawiera unikalną globalnie nazwę zasobu 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 przy użyciu 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 dodać usługi Firebase do istniejącego projektu Google Cloud. Pamiętaj, że możesz także 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łać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi zakończyć się pomyślnie.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operację operations.get do momentu, aż wartość done będzie true , a response będzie typu FirebaseProject . Jeśli operacja się nie powiedzie, jej error jest ustawiany 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 true , a typ response to FirebaseProject , projekt Google Cloud ma teraz usługi Firebase. Odpowiedź zawiera także inne przydatne informacje o nowo utworzonym FirebaseProject , takie jak jego 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 aplikacje na iOS, Androida i aplikacje internetowe. W tej sekcji dowiesz się, jak programowo dodać aplikacje Firebase do istniejącego FirebaseProject . Pamiętaj, że możesz także 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 : nazwa wyświetlana aplikacji przypisana przez użytkownika. Ta wartość jest przydatna do późniejszego znalezienia aplikacji w konsoli Firebase .

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

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

Oto przykład, jak Node.js dodaje 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łać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi zakończyć się pomyślnie.

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

Dodaj certyfikaty SHA

Możesz dodać certyfikaty SHA do dowolnej istniejącej aplikacji Firebase na Androida, wywołując projects.androidApps.sha.create . Treść żądania dla 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 skrót certyfikatu SHA-1 lub SHA-256. Możesz uzyskać skrót SHA swojego certyfikatu podpisującego za pomocą polecenia stopniowego signingReport :

./gradlew signingReport

Aby uzyskać więcej informacji, odwiedź stronę Interfejsy API Google dla Androida .

Możesz programowo połączyć istniejące konto Google Analytics z istniejącym FirebaseProject . Pamiętaj, że możesz także 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órym może być analyticsAccountId lub analyticsPropertyId :

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

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

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

Kiedy wywołujesz projects.addGoogleAnalytics :

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

  2. Jeśli dla Twoich aplikacji Firebase nie zostaną znalezione odpowiednie strumienie danych, w usłudze Google Analytics zostaną udostępnione nowe strumienie danych dla każdej z Twoich aplikacji Firebase. Pamiętaj, że dla aplikacji internetowej zawsze jest udostępniany nowy strumień danych, nawet jeśli był wcześniej powiązany ze strumieniem danych w Twojej usłudze Analytics.

Więcej informacji na temat hierarchii i struktury kont Google Analytics znajdziesz w dokumentacji Analytics .

WNIOSEK

Wywołaj projects.addGoogleAnalytics .

W treści żądania naszego przykładowego wywołania project.addGoogleAnalytics określimy nasze konto Google Analytics analyticsAccountId . To wywołanie udostępni nową usługę Google Analytics i powiąże ją z FirebaseProject .

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

Oto przykład połączenia Node.js projektu 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łać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi zakończyć się pomyślnie.

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

Sfinalizuj domyślną lokalizację swojego 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) dla swojego projektu. Pamiętaj, że możesz także wybrać lokalizację w konsoli Firebase .

Przed ustawieniem tej lokalizacji zapoznaj się z sekcją Wybierz lokalizacje dla swojego projektu , aby uzyskać informacje o tym, która lokalizacja jest najlepsza dla Twojego projektu. Powinieneś także wywołać metodę 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 Twojej 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 zlokalizowanym w locationId podanym w treści żądania.

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

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 wymagających ustawienia lokalizacji, np. Cloud Firestore lub Cloud Storage.
{
  "locationId": "us-west2"
}

Oto przykład, jak 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 projects.defaultLocation.finalize jest Operation . Zanim będzie można wywołać inne punkty końcowe związane z Firebase dla swojego projektu, operacja musi zakończyć się pomyślnie.

Aby sprawdzić, czy operacja się powiodła, możesz wywołać operację operations.get do momentu, aż wartość done będzie true , a response będzie typu google.protobuf.Empty . Jeśli operacja się nie powiedzie, error w treści odpowiedzi będzie typu google.rpc.Status . Operation jest automatycznie usuwana po zakończeniu.