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:
- Dodaj usługi Firebase do swojego projektu
- Dodaj aplikacje Firebase do swojego projektu Firebase
- Połącz swój projekt Firebase z kontem Google Analytics
- Sfinalizuj domyślną lokalizację swojego projektu
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.
- Otwórz stronę API zarządzania Firebase w konsoli Google API.
- Po wyświetleniu monitu wybierz projekt Google Cloud.
- 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 .
Połącz swój projekt Firebase z kontem Google Analytics (opcjonalnie)
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
:
Pierwsza kontrola określa, czy istniejące strumienie danych w usłudze Google Analytics odpowiadają jakimkolwiek istniejącym aplikacjom Firebase w Twoim
FirebaseProject
(na podstawiepackageName
lubbundleId
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.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.