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 . Тело запроса для этого вызова должно быть пустым.
Вот пример 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.
Свяжите свой проект 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 автоматически удаляется после завершения.