REST API управления Firebase позволяет программно настраивать и управлять проектами Firebase, включая ресурсы Firebase и приложения Firebase.
В этом обзоре описывается общий порядок действий по добавлению ресурсов и приложений Firebase в существующий проект Google Cloud , который еще не использует сервисы Firebase.
При желании вы можете перейти к определенным разделам этой страницы:
- Добавьте сервисы Firebase в свой проект.
- Добавьте приложения Firebase в свой проект Firebase.
- Свяжите свой проект Firebase с аккаунтом Google Analytics.
Прежде чем выполнять какие-либо действия на этой странице, убедитесь, что вы включили API .
Для получения информации об управлении доступом к API управления Firebase посетите документацию по API управления доступом к облачным идентификаторам (IAM) .
Прежде чем начать
Прежде чем начать, вам необходимо включить API управления для вашего проекта Google Cloud и сгенерировать токен доступа .
Включите REST API управления для вашего проекта Google Cloud .
Если вы еще этого не сделали, вам необходимо включить Firebase Management API для использования с вашим проектом Google Cloud .
- Откройте страницу Firebase Management API в консоли Google API.
- При появлении запроса выберите свой проект Google Cloud .
- На странице Firebase Management API нажмите кнопку «Включить» .
Сгенерируйте токен доступа к API.
Вот пример для Node.js, который получает ваш токен доступа.
Во-первых, если вы не работаете в среде Google Cloud , установите переменную среды GOOGLE_APPLICATION_CREDENTIALS , указав путь к ключу вашей учетной записи службы.
Linux или macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
С помощью PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Затем используйте Firebase Admin SDK, чтобы получить токен доступа из учетных данных вашей сервисной учетной записи:
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);
}
}
Найдите название ресурса вашего проекта.
Вы можете найти проекты Google Cloud , в которые можно добавить сервисы Firebase.
ЗАПРОС
Вызовите метод availableProjects.list . Тело запроса для этого вызова должно быть пустым.
Вот пример того, как Node.js может запросить список доступных проектов 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);
}
}
РЕЗУЛЬТАТ
В ответ на вызов availableProjects.list в теле ответа содержится список объектов ProjectInfo . Если список проектов слишком длинный, в теле ответа также содержится nextPageToken , который можно использовать в качестве параметра запроса для получения следующей страницы проектов.
Вот пример тела ответа от вызова availableProjects.list :
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
В этом примере ответа представлены два проекта Google Cloud , к которым можно добавить сервисы Firebase. Обратите внимание, что поле project содержит уникальное глобальное имя ресурса для проекта.
Для добавления сервисов Firebase или приложений в ваш проект вы можете использовать любое значение project , указанное в ответе от availableProjects.list .
В следующем разделе мы добавим сервисы Firebase в First Cloud Project используя имя ресурса projects/first-gcp-project .
Добавьте сервисы Firebase в свой проект.
Проекты Google Cloud могут использовать сервисы Firebase. В этом разделе вы узнаете, как программно добавить сервисы Firebase в существующий проект Google Cloud . Обратите внимание, что вы также можете добавить сервисы Firebase в существующий проект Google Cloud через консоль Firebase .
ЗАПРОС
Вызовите метод projects.addFirebase . Тело запроса для этого вызова должно быть пустым.
Вот пример того, как с помощью Node.js можно добавить сервисы Firebase в ваш проект 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']);
}
}
РЕЗУЛЬТАТ
Результатом вызова projects.addFirebase является Operation . Прежде чем вы сможете вызывать другие связанные с Firebase конечные точки для вашего проекта, операция должна быть успешно завершена.
Чтобы проверить успешность операции, можно вызывать operations.get для этой операции до тех пор, пока значение done не станет true , а response не будет иметь тип FirebaseProject . Если операция завершится неудачей, в качестве error будет установлено значение google.rpc.Status .
Вот тело ответа от вызова 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"
}
}
}
Поскольку значение параметра done равно true , а тип response — FirebaseProject , проект Google Cloud теперь имеет сервисы Firebase. Ответ также содержит другую полезную информацию о вашем недавно созданном FirebaseProject , например, его projectNumber и resources по умолчанию. Operation автоматически удаляется после завершения.
Добавьте приложения Firebase в свой проект.
Многие различные приложения могут использовать FirebaseProject , включая приложения для iOS, Android и веб-приложения. В этом разделе вы узнаете, как программно добавить приложения Firebase в существующий FirebaseProject . Обратите внимание, что вы также можете добавить приложения Firebase в существующий проект Firebase через консоль Firebase .
Выберите тип приложения Firebase, который хотите добавить в свой проект Firebase.
iOS+
Вы можете добавить iOS-приложение Firebase в свой существующий проект Firebase.
ЗАПРОС
Вызовите метод projects.iosApps.create . Вот как сформировать тело запроса:
Необходимый:
-
bundleId: Канонический идентификатор пакета iOS-приложения, как он будет отображаться в App Store.
-
Необязательно, но рекомендуется:
displayName: Назначенное пользователем отображаемое имя приложения. Это значение полезно для последующего поиска приложения в консоли Firebase .appStoreId: Автоматически сгенерированный Apple ID, присвоенный вашему приложению компанией Apple. УкажитеappStoreIdесли он уже был присвоен Apple.
В теле запроса в нашем примере мы будем использовать только displayName и bundleId :
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
Вот пример того, как добавить iOS-приложение Firebase в ваш проект Firebase с помощью Node.js:
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']);
}
}
РЕЗУЛЬТАТ
Результатом вызова projects.iosApps.create является Operation . Прежде чем вы сможете вызывать другие связанные с Firebase конечные точки для вашего проекта, операция должна быть успешно завершена.
Чтобы проверить успешность операции, можно вызывать operations.get для этой операции до тех пор, пока значение done не станет true , а response не будет иметь тип IosApp . Если операция завершится неудачей, в качестве error будет установлено значение google.rpc.Status .
Вот тело ответа от вызова 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"
}
}
Поскольку значение параметра done равно true , а тип response — IosApp , в FirebaseProject теперь есть объект IosApp . Ответ также содержит другую полезную информацию о вашем недавно созданном приложении Firebase для iOS, например, уникальный appId ). Operation автоматически удаляется после завершения.
Android
Вы можете добавить Android-приложение Firebase в свой существующий проект Firebase.
ЗАПРОС
Вызовите метод projects.androidApps.create . Вот как сформировать тело запроса:
Необходимый:
-
packageName: Каноническое имя пакета приложения Android, как оно будет отображаться в консоли разработчика Google Play.
-
Необязательно, но рекомендуется:
-
displayName: Назначенное пользователем отображаемое имя приложения. Это значение полезно для последующего поиска вашего приложения в консоли Firebase .
-
В теле запроса в нашем примере мы будем использовать packageName и displayName :
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Вот пример того, как добавить Android-приложение Firebase в ваш проект Firebase с помощью Node.js:
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']);
}
}
РЕЗУЛЬТАТ
Результатом вызова projects.androidApps.create является Operation . Прежде чем вы сможете вызывать другие связанные с Firebase конечные точки для вашего проекта, операция должна быть успешной.
Чтобы проверить успешность операции, можно вызывать operations.get для этой операции до тех пор, пока значение done не станет true , а response не будет иметь тип AndroidApp . Если операция завершится неудачей, в качестве error будет установлено значение google.rpc.Status .
Вот тело ответа от вызова 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"
}
}
Поскольку значение параметра done равно true , а тип response — AndroidApp , в FirebaseProject теперь есть AndroidApp . Ответ также содержит другую полезную информацию о вашем недавно созданном приложении Firebase для Android, например, уникальный идентификатор приложения Firebase ( appId ). Operation автоматически удаляется после завершения.
Добавить сертификаты SHA
Добавить SHA-сертификаты в любое существующее Android-приложение Firebase можно, вызвав метод projects.androidApps.sha.create . Тело запроса для этого метода должно содержать пустое поле name . Результатом вызова является новый созданный экземпляр класса ShaCertificate .
При вызове projects.androidApps.sha.create необходимо указать действительный хеш сертификата SHA-1 или SHA-256. Хеш SHA вашего сертификата подписи можно получить с помощью команды gradle signingReport :
./gradlew signingReport
Для получения более подробной информации посетите страницу Google APIs для Android .
Веб
Вы можете добавить веб-приложение Firebase в свой существующий проект Firebase.
ЗАПРОС
Вызовите метод projects.webApps.create . Вот как сформировать тело запроса:
Необязательный:
-
displayName: Назначенное пользователем отображаемое имя приложения. Это значение полезно для последующего поиска вашего приложения в консоли Firebase .
-
Не рекомендуется:
-
appUrls: Полные URL-адреса, по которым размещено приложение. Когда веб-приложение Firebase связано с сайтом Firebase Hosting , Firebase автоматически заполняет эти поля, поэтому оставьте их пустыми в теле запроса.
-
В нашем примере мы укажем displayName только в теле запроса:
{
"displayName": "My Firebase Web App"
}
Вот пример того, как добавить веб-приложение Firebase в ваш проект Firebase с помощью Node.js:
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']);
}
}
РЕЗУЛЬТАТ
Результатом вызова projects.webApps.create является Operation . Прежде чем вы сможете вызывать другие связанные с Firebase конечные точки для вашего проекта, операция должна быть успешно завершена.
Чтобы проверить успешность операции, можно вызывать operations.get для этой операции до тех пор, пока значение done не станет true , а response не будет иметь тип WebApp . Если операция завершилась неудачей, в качестве error будет установлено значение google.rpc.Status .
Вот тело ответа от вызова 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"
}
}
Поскольку значение параметра done равно true , а тип response — WebApp , объект FirebaseProject теперь имеет WebApp . Ответ также содержит другую полезную информацию о вашем недавно созданном веб-приложении Firebase, например, уникальный идентификатор приложения Firebase ( appId . Operation автоматически удаляется после завершения.
Свяжите свой проект Firebase с аккаунтом Google Analytics (необязательно).
Вы можете программно связать существующую учетную запись Google Analytics с существующим FirebaseProject . Обратите внимание, что вы также можете связать существующий проект Firebase с Google Analytics на вкладке «Интеграции» в настройках проекта .
Для вызова projects.addGoogleAnalytics требуется объект analytics_resource , который может быть либо analyticsAccountId , либо analyticsPropertyId :
Укажите существующий
analyticsAccountId, чтобы создать новое свойство Google Analytics в указанной учетной записи и связать это новое свойство с вашим проектом Firebase.Укажите существующий
analyticsPropertyId, чтобы связать свойство Google Analytics с вашим проектом Firebase.
Идентификатор вашей analyticsAccountId , а также идентификаторы существующих analyticsPropertyId можно найти на веб-сайте Google Analytics .
При вызове метода projects.addGoogleAnalytics :
Первая проверка определяет, соответствуют ли существующие потоки данных в свойстве Google Analytics каким-либо существующим приложениям Firebase в вашем
FirebaseProject(на основеpackageNameилиbundleIdсвязанных с потоком данных). Затем, если применимо, потоки данных и приложения связываются. Обратите внимание, что это автоматическое связывание применяется только к приложениям Android и iOS.Если для ваших приложений Firebase не найдены соответствующие потоки данных, новые потоки данных создаются в свойстве Google Analytics для каждого из ваших приложений Firebase. Обратите внимание, что новый поток данных всегда создается для веб-приложения, даже если оно ранее было связано с потоком данных в вашем свойстве Analytics.
Подробнее об иерархии и структуре учетных записей Google Analytics можно узнать в документации по Analytics .
ЗАПРОС
Вызовите projects.addGoogleAnalytics .
В теле запроса для нашего примера вызова project.addGoogleAnalytics мы укажем наш аккаунт Google Analytics analyticsAccountId . Этот вызов создаст новое свойство Google Analytics и свяжет его с FirebaseProject .
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Вот пример того, как Node.js может связать проект Firebase с учетной записью 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']);
}
}
РЕЗУЛЬТАТ
Результатом вызова projects.addGoogleAnalytics является Operation . Прежде чем вы сможете вызывать другие связанные с Firebase конечные точки для вашего проекта, операция должна быть успешной.
Чтобы проверить успешность операции, можно вызывать operations.get для этой операции до тех пор, пока значение done не станет true , а response не будет иметь тип analyticsDetails . Если операция завершилась неудачей, в качестве error будет установлено значение google.rpc.Status .
Вот тело ответа от вызова operations.get :
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
Поскольку значение done равно true, а тип response — analyticsDetails , FirebaseProject теперь связан с указанным аккаунтом Google Analytics. Operation автоматически удаляется после завершения.