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:
- Dodaj usługi Firebase do swojego projektu
- Dodaj aplikacje Firebase do swojego projektu Firebase
- Połącz projekt Firebase z kontem Google Analytics
- Sfinalizuj domyślną lokalizację projektu
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.
- Otwórz stronę interfejsu Firebase Management API w konsoli interfejsów Google API.
- Po wyświetleniu monitu wybierz swój projekt Google Cloud.
- 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 .
Połącz projekt Firebase z kontem Google Analytics (opcjonalnie)
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
:
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 nazwypackageName
lubbundleId
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.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.