Интерфейс REST API для управления Firebase позволяет программно настраивать и управлять проектами Firebase, включая ресурсы Firebase и приложения Firebase.
В этом обзоре описывается общий рабочий процесс добавления ресурсов и приложений Firebase в существующий проект Google Cloud , который еще не использует службы Firebase.
Вы можете перейти к определенным разделам этой страницы, если вы просто хотите:
- Добавьте сервисы Firebase в свой проект
- Добавьте приложения Firebase в свой проект Firebase
- Свяжите свой проект Firebase с аккаунтом Google Analytics
Прежде чем выполнять какие-либо действия на этой странице, убедитесь, что у вас включен API .
Информацию об управлении доступом для API Firebase Management см. в документации API Cloud Identity Access Management (IAM) .
Прежде чем начать
Прежде чем начать, вам необходимо включить API управления для вашего проекта Google Cloud и сгенерировать токен доступа .
Включите API управления REST для вашего проекта 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"
Окна
С 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.
iOS+
Вы можете добавить приложение Firebase iOS в существующий проект Firebase.
ЗАПРОС
Вызовите projects.iosApps.create
. Вот как создать тело запроса:
Необходимый:
-
bundleId
: канонический идентификатор пакета приложения iOS, как он будет отображаться в iOS App Store.
-
Необязательно, но рекомендуется:
displayName
: Отображаемое имя приложения, назначенное пользователем. Это значение полезно для последующего поиска приложения в консоли Firebase .appStoreId
: автоматически сгенерированный идентификатор Apple ID, назначенный вашему приложению компанией Apple. УкажитеappStoreId
, если он уже назначен компанией Apple.
В теле запроса для нашего примера мы будем использовать только displayName
и bundleId
:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
Вот пример использования Node.js для добавления приложения Firebase iOS в ваш проект Firebase:
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, например, уникальный идентификатор Firebase appId
. Operation
автоматически удаляется после завершения.
Андроид
Вы можете добавить приложение Firebase для Android в существующий проект Firebase.
ЗАПРОС
Вызовите projects.androidApps.create
. Вот как создать тело запроса:
Необходимый:
-
packageName
: Каноническое имя пакета приложения Android, как оно будет отображаться в консоли разработчика Google Play.
-
Необязательно, но рекомендуется:
-
displayName
: Отображаемое имя приложения, назначенное пользователем. Это значение полезно для последующего поиска приложения в консоли Firebase .
-
В теле запроса для нашего примера мы будем использовать packageName
и displayName
:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Вот пример использования Node.js для добавления приложения Firebase Android в ваш проект 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']);
}
}
РЕЗУЛЬТАТ
Результатом вызова 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 в любое существующее приложение Firebase для Android, вызвав projects.androidApps.sha.create
. Тело запроса для этого метода должно содержать пустое поле name
. Результатом этого вызова является новый созданный экземпляр ShaCertificate
.
При вызове projects.androidApps.sha.create
необходимо предоставить действительный хеш сертификата SHA-1 или SHA-256. Получить SHA-хеш вашего сертификата подписи можно с помощью команды gradle signingReport
:
./gradlew signingReport
Для получения более подробной информации посетите страницу API Google для Android .
Интернет
Вы можете добавить Firebase Web App в существующий проект Firebase.
ЗАПРОС
Вызовите projects.webApps.create
. Вот как создать тело запроса:
Необязательный:
-
displayName
: Отображаемое имя приложения, назначенное пользователем. Это значение полезно для последующего поиска приложения в консоли Firebase .
-
Не рекомендуется:
-
appUrls
: Полные URL-адреса, на которых размещено приложение. Когда веб-приложение Firebase связано с сайтом Firebase Hosting , Firebase автоматически заполняет эти поля, поэтому оставьте их пустыми в теле запроса.
-
Для нашего примера мы укажем displayName
только в теле запроса:
{
"displayName": "My Firebase Web App"
}
Вот пример использования Node.js для добавления веб-приложения Firebase в ваш проект Firebase:
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 Web App, например, уникальный идентификатор 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
мы укажем 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
автоматически удаляется после завершения.