Interfejs Firebase Management REST API umożliwia programowe konfigurowanie projektów Firebase i zarządzanie nimi, w tym zasobami Firebase projektu i aplikacjami Firebase.
Ten przegląd opisuje ogólny proces dodawania zasobów i aplikacji do istniejącego Google Cloud projektu który nie korzysta jeszcze z usług Firebase.
Jeśli chcesz tylko:
- dodać usługi Firebase do projektu,
- dodać aplikacje w Firebase do projektu w Firebase,
- połączyć projekt w Firebase z kontem Google Analytics,
zanim wykonasz jakiekolwiek czynności opisane na tej stronie, upewnij się, że włączysz interfejs API.
Informacje o zarządzaniu dostępem do interfejsu Firebase Management API znajdziesz w dokumentacji interfejsu Cloud Identity Access Management (IAM) API.
Zanim zaczniesz
Zanim zaczniesz, musisz włączyć interfejs API zarządzania Google Analytics dla swojego Google Cloud projektu i wygenerować token dostępu.
Włączanie interfejsu Management REST API w projekcie Google Cloud
Jeśli jeszcze tego nie zrobisz, musisz włączyć interfejs Firebase Management API do użytku z projektem Google Cloud.
- Otwórz stronę interfejsu Firebase Management API w konsoli Google APIs.
- Gdy pojawi się taka prośba, wybierz projekt Google Cloud.
- Na stronie interfejsu Firebase Management API kliknij Włącz.
Generowanie tokena dostępu do interfejsu API
Oto przykład w Node.js, który pobiera token dostępu.
Najpierw, jeśli nie jesteś w środowisku Google Cloud, ustaw zmienną
GOOGLE_APPLICATION_CREDENTIALS środowiskową na ścieżkę do klucza
konta usługi.
Linux lub macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
W PowerShellu:
$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 na podstawie danych logowania konta usługi:
import { initializeApp, applicationDefault } from "firebase-admin/app";
initializeApp();
async function getAccessToken() {
try {
const accessToken = await applicationDefault().getAccessToken();
return accessToken.access_token;
} catch (err) {
console.error('Unable to get access token');
console.error(err);
}
}
Znajdowanie nazwy zasobu projektu
Możesz znaleźć projekty Google Cloud, do których można dodać usługi Firebase.
WYŚLIJ PROŚBĘ
Wywołaj
availableProjects.list.
Treść żądania w tym wywołaniu musi być pusta.
Oto przykład w Node.js, który wysyła prośbę o listę dostępnych Google Cloud projektów:
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 na wywołanie availableProjects.list zawiera listę obiektów
ProjectInfo. Jeśli lista projektów jest zbyt długa, treść odpowiedzi zawiera też element nextPageToken, którego możesz użyć jako parametru zapytania, aby uzyskać następną stronę projektów.
Oto przykładowa treść 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 Google Cloud projekty, do których można dodać usługi Firebase. Pamiętaj, że pole project zawiera globalnie unikalną nazwę zasobu projektu.
Możesz użyć dowolnej wartości project wymienionej w odpowiedzi na
availableProjects.list aby dodać usługi Firebase lub
dodać aplikacje do projektu.
W następnej sekcji dodamy usługi Firebase do projektu First Cloud Project za pomocą nazwy zasobu projects/first-gcp-project.
Dodawanie usług Firebase do projektu
Google Cloud projekty mogą korzystać z usług oferowanych przez Firebase. W tej sekcji dowiesz się, jak programowo dodać usługi Firebase do istniejącego Google Cloud projektu. Pamiętaj, że usługi Firebase możesz też dodać do istniejącego projektu Google Cloud w konsoli Firebase.
WYŚLIJ PROŚBĘ
Wywołaj
projects.addFirebase.
Treść żądania w tym wywołaniu musi być pusta.
Oto przykład w Node.js, który 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ędziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.
Aby sprawdzić, czy operacja się powiodła, możesz wywołać
operations.get
w operacji, aż wartość done będzie równa 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 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 ma wartość true, a typ response to FirebaseProject, projekt
Google Cloud ma teraz usługi Firebase. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonym projekcie FirebaseProject, takie jak projectNumber i domyślne resources. Po zakończeniu operacja Operation jest automatycznie usuwana.
Dodawanie aplikacji Firebase do projektu
Z 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 projektu FirebaseProject. Pamiętaj, że aplikacje Firebase możesz też dodać do
istniejącego projektu Firebase w Firebase konsoli.
Wybierz typ aplikacji w Firebase, którą chcesz dodać do projektu w Firebase.
iOS+
Do istniejącego projektu w Firebase możesz dodać aplikację Firebase na iOS.
WYŚLIJ PROŚBĘ
Wywołaj
projects.iosApps.create.
Oto jak utworzyć treść żądania:
Wymagane:
bundleId: kanoniczny identyfikator pakietu aplikacji na iOS, taki jak w iOS App Store.
Rozwiązanie opcjonalne, ale zalecane:
displayName: nazwa wyświetlana aplikacji przypisana przez użytkownika. Ta wartość jest przydatna do późniejszego znajdowania aplikacji w Firebase konsoli.appStoreId: automatycznie wygenerowany identyfikator Apple ID przypisany do aplikacji przez Apple. OkreślappStoreId, jeśli został już przypisany przez Apple.
W treści żądania w naszym przykładzie użyjemy tylko displayName i bundleId:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
Oto przykład w Node.js, który dodaje aplikację Firebase na iOS do projektu Firebase:
const fetch = require('node-fetch');
async function addIosApp(projectId, displayName, bundleId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/iosApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'bundleId': bundleId
}),
};
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.iosApps.create jest
Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.
Aby sprawdzić, czy operacja się powiodła, możesz wywołać
operations.get
w operacji, aż wartość done będzie równa true, a jej response będzie typu IosApp. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony 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.IosApp",
"name": "projects/first-cloud-project/iosApps/...",
"appId": "...",
"displayName": "My Firebase iOS App",
"projectId": "first-cloud-project",
"bundleId": "com.firebase.ios"
}
}
Ponieważ done ma wartość true, a typ response to IosApp, projekt FirebaseProject ma teraz IosApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji Firebase na iOS, takie jak unikalny identyfikator Firebase appId. Po zakończeniu operacja Operation jest automatycznie usuwana.
Android
Do istniejącego projektu w Firebase możesz dodać aplikację Firebase na Androida.
WYŚLIJ PROŚBĘ
Wywołaj
projects.androidApps.create.
Oto jak utworzyć treść żądania:
Wymagane:
packageName: kanoniczna nazwa pakietu aplikacji na Androida, taka jak w Konsoli Google Play.
Rozwiązanie opcjonalne, ale zalecane:
displayName: nazwa wyświetlana aplikacji przypisana przez użytkownika. Ta wartość jest przydatna do późniejszego znajdowania aplikacji w Firebase konsoli.
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 w Node.js, który 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 an
Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.
Aby sprawdzić, czy operacja się powiodła, możesz wywołać
operations.get
w operacji, aż wartość done będzie równa true, a jej response będzie typu
AndroidApp. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony 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 ma wartość true, a typ response to AndroidApp, projekt FirebaseProject ma teraz AndroidApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji Firebase na Androida, takie jak unikalny identyfikator Firebase appId. Po zakończeniu operacja Operation jest automatycznie usuwana.
Dodawanie certyfikatów SHA
Do dowolnej istniejącej aplikacji Firebase na Androida możesz dodać certyfikaty SHA, wywołując
projects.androidApps.sha.create.
Treść żądania w tym wywołaniu metody musi zawierać puste pole name.
Wynikiem tego wywołania jest nowo utworzona instancja
ShaCertificate.
Podczas wywoływania projects.androidApps.sha.create musisz podać prawidłowy skrót certyfikatu SHA-1 lub SHA-256. Skrót SHA certyfikatu podpisywania możesz uzyskać za pomocą polecenia gradle signingReport:
./gradlew signingReport
Więcej informacji znajdziesz w artykule interfejsy API Google na Androida.
Sieć
Do istniejącego projektu w Firebase możesz dodać aplikację internetową Firebase.
WYŚLIJ PROŚBĘ
Wywołaj
projects.webApps.create.
Oto jak utworzyć treść żądania:
Opcjonalnie:
displayName: nazwa wyświetlana aplikacji przypisana przez użytkownika. Ta wartość jest przydatna do późniejszego znajdowania aplikacji w Firebase konsoli.
Nie zalecane:
appUrls: pełne i jednoznaczne adresy URL, pod którymi jest hostowana aplikacja. Gdy aplikacja internetowa Firebase jest powiązana z witryną Firebase Hosting, Firebase automatycznie wypełnia te pola, więc pozostaw je puste w treści żądania.
W treści żądania w naszym przykładzie określimy tylko displayName:
{
"displayName": "My Firebase Web App"
}
Oto przykład w Node.js, który dodaje aplikację internetową Firebase do projektu Firebase:
const fetch = require('node-fetch');
async function addWebApp(projectId, displayName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/webApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName
}),
};
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.webApps.create jest
Operation. Zanim będziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.
Aby sprawdzić, czy operacja się powiodła, możesz wywołać
operations.get
w operacji, aż wartość done będzie równa true, a jej response będzie typu
WebApp. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony 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.WebApp",
"name": "projects/first-cloud-project/webApps/...",
"appId": "...",
"displayName": "My Firebase Web App",
"projectId": "first-cloud-project"
}
}
Ponieważ done ma wartość true, a typ response to WebApp, projekt FirebaseProject ma teraz WebApp. Odpowiedź zawiera też inne przydatne informacje o nowo utworzonej aplikacji internetowej Firebase, takie jak unikalny identyfikator Firebase appId. Po zakończeniu operacja Operation jest automatycznie usuwana.
Łączenie projektu w Firebase z kontem Google Analytics (opcjonalnie)
Możesz programowo połączyć istniejące
konto Google Analytics z istniejącym
FirebaseProject. Pamiętaj, że istniejący
projekt Firebase możesz też połączyć z Google Analytics na
karcie Integracje
w sekcji Ustawienia projektu.
Wywołanie projects.addGoogleAnalytics wymaga analytics_resource, który może być analyticsAccountId lub analyticsPropertyId:
Określ istniejący
analyticsAccountId, aby utworzyć nową usługę w Google Analytics na określonym koncie i powiązać ją z projektem w Firebase.Określ istniejący
analyticsPropertyId, aby powiązać usługę w Google Analytics z projektem w Firebase.
Zarówno analyticsAccountId, jak i każdy istniejący
analyticsPropertyId znajdziesz w witrynie Google Analytics.
Gdy wywołasz projects.addGoogleAnalytics:
Pierwsze sprawdzenie określa, czy istniejące strumienie danych w usłudze Google Analytics odpowiadają istniejącym aplikacjom Firebase w projekcie
FirebaseProject(na podstawiepackageNamelubbundleIdpowiązanego ze strumieniem danych). Następnie, w zależności od potrzeb, strumienie danych i aplikacje są łączone. Pamiętaj, że to automatyczne łączenie dotyczy tylko aplikacji na Androida i iOS.Jeśli nie zostaną znalezione żadne odpowiednie strumienie danych dla aplikacji w Firebase, w usłudze w Google Analytics zostaną utworzone nowe strumienie danych dla każdej aplikacji w Firebase. Pamiętaj, że nowy strumień danych jest zawsze tworzony w przypadku aplikacji internetowej, nawet jeśli była ona wcześniej powiązana 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Ę
Wywołaj
projects.addGoogleAnalytics.
W treści żądania w naszym przykładowym wywołaniu project.addGoogleAnalytics określimy nasze konto Google Analytics analyticsAccountId. To wywołanie utworzy nową usługę w Google Analytics i powiąże ją z projektem FirebaseProject.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Oto przykład w Node.js, który łączy projekt w 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ędziesz mieć możliwość wywoływania innych punktów końcowych związanych z Firebase w projekcie, operacja musi się powieść.
Aby sprawdzić, czy operacja się powiodła, możesz wywołać operations.get w operacji, aż wartość done będzie równa true, a jej response będzie typu analyticsDetails. Jeśli operacja się nie powiedzie, jej error zostanie ustawiony 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, projekt FirebaseProject jest teraz połączony z określonym kontem Google Analytics. Po zakończeniu operacja Operation jest automatycznie usuwana.