API REST управления Firebase обеспечивает программную настройку и управление проектами Firebase, включая ресурсы Firebase проекта и приложения Firebase.
В этом обзоре описан общий рабочий процесс добавления ресурсов и приложений Firebase в существующий проект Google Cloud , который еще не использует службы Firebase.
Вы можете перейти к определенным разделам этой страницы, если хотите:
- Добавьте сервисы Firebase в свой проект
- Добавьте приложения Firebase в свой проект Firebase
- Свяжите свой проект Firebase с аккаунтом Google Analytics.
Прежде чем выполнять какие-либо действия на этой странице, убедитесь, что вы включили API .
Информацию об управлении доступом для Firebase Management API см. в документации по API Cloud Identity Access Management (IAM) .
Прежде чем начать
Прежде чем начать, вам необходимо включить 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
. Тело запроса для этого вызова должно быть пустым.
Вот пример добавления сервисов Firebase в ваш проект Google Cloud с помощью Node.js:
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.
Свяжите свой проект 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
для операции до тех пор, пока значение 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
автоматически удаляется после завершения.