REST API управления Firebase позволяет программно настраивать и управлять проектами Firebase, включая ресурсы Firebase проекта и приложения Firebase.
В этом обзоре описывается общий рабочий процесс добавления ресурсов и приложений Firebase в существующий проект Google Cloud , который в настоящее время не использует службы Firebase.
Вы можете перейти к определенным разделам этой страницы, если хотите:
- Добавьте сервисы Firebase в свой проект
- Добавьте приложения Firebase в свой проект Firebase
- Свяжите свой проект Firebase с аккаунтом Google Analytics
- Завершите расположение вашего проекта по умолчанию
Прежде чем выполнять какие-либо действия на этой странице, убедитесь, что вы включили API .
Информацию об управлении доступом для Firebase Management API см. в документации по Cloud Identity Access Management (IAM) API .
Прежде чем вы начнете
Прежде чем начать, вам нужно включить Management API для вашего проекта Google Cloud и сгенерировать токен доступа .
Включите Management REST API для вашего проекта Google Cloud.
Если вы еще этого не сделали, вам нужно включить Firebase Management API для использования с вашим проектом Google Cloud.
- Откройте страницу Firebase Management API в консоли API Google.
- При появлении запроса выберите свой проект Google Cloud.
- Нажмите « Включить » на странице Firebase Management API.
Создайте свой токен доступа к API
Вот пример для Node.js, который извлекает ваш токен доступа.
Во-первых, если вы не находитесь в среде Google Cloud, задайте для переменной среды GOOGLE_APPLICATION_CREDENTIALS
путь к ключу вашей служебной учетной записи.
Линукс или макОС
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Окна
С PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Затем используйте Firebase Admin SDK, чтобы получить токен доступа из учетных данных вашей учетной записи службы:
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);
});
}
Найдите название ресурса вашего проекта
Вы можете найти проекты 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
содержит глобально уникальное имя ресурса для проекта.
Вы можете использовать любое значение project
, указанное в ответе availableProjects.list
, чтобы добавить службы Firebase или добавить приложения в свой проект.
В следующем разделе мы добавим сервисы 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
Operations.get до тех пор, пока значение done
не станет true
, а его response
не будет иметь тип FirebaseProject
. Если операция завершается сбоем, ее error
устанавливается в google.rpc.Status
.
Вот тело operations.get
на вызов 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.
Свяжите свой проект 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
мы укажем analyticsAccountId
нашей учетной записи Google Analytics. Этот вызов предоставит новое свойство 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
Operations.get до тех пор, пока значение done
не станет true
, а response
не будет иметь тип analyticsDetails
. Если операция завершается сбоем, ее error
устанавливается в google.rpc.Status
.
Вот тело operations.get
на вызов 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
автоматически удаляется после завершения.
Завершите расположение вашего проекта по умолчанию (необязательно)
Если ваш проект Firebase будет использовать Cloud Firestore, Cloud Storage или приложение App Engine, вы можете программно завершить расположение ресурса Google Cloud Platform (GCP) по умолчанию для своего проекта. Обратите внимание, что вы также можете выбрать местоположение в консоли Firebase .
Перед настройкой этого местоположения ознакомьтесь с информацией о том, какое местоположение лучше всего подходит для вашего проекта, в разделе Выбор местоположений для вашего проекта. Вы также должны вызвать projects.availableLocations
, чтобы вернуть список допустимых местоположений для вашего проекта, поскольку, если ваш проект является частью организации Google Cloud, политики вашей организации могут ограничивать допустимые расположения для вашего проекта.
При вызове этого метода defaultLocation.finalize
создается приложение App Engine с сегментом Cloud Storage по умолчанию , расположенным по идентификатору locationId
, указанному в тексте запроса.
Расположение ресурса GCP по умолчанию могло быть уже указано, если в Project
уже есть приложение App Engine или этот метод defaultLocation.finalize
был вызван ранее.
ЗАПРОС
Вызов projects.defaultLocation.finalize
. Вот как построить тело запроса:
Необходимые:
-
locationId
: место, где хранятся ваши данные для сервисов GCP, для которых требуется настройка местоположения, например Cloud Firestore или Cloud Storage.
-
{
"locationId": "us-west2"
}
Вот пример Node.js для окончательного определения местоположения вашего проекта по умолчанию:
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']);
}
}
РЕЗУЛЬТАТ
Результатом вызова projects.defaultLocation.finalize
является Operation
. Прежде чем вы сможете вызывать другие конечные точки, связанные с Firebase, для вашего проекта, операция должна быть успешной.
Чтобы проверить, успешно ли выполнена операция, вы можете вызывать operations.get
operation.get до тех пор, пока значение done
не станет true
, а его response
не будет иметь тип google.protobuf.Empty
. Если операция завершится неудачно, error
тела ответа будет иметь тип google.rpc.Status
. Operation
автоматически удаляется после завершения.