Catch up on everthing we announced at this year's Firebase Summit. Learn more

Настройка проекта Firebase и управление им с помощью Management REST API

Firebase Management REST API позволяет программным установку и управление проектами, в том числе Firebase Firebase ресурсов проекта и Firebase Apps.

Этот обзор описывает общий рабочий процесс , чтобы добавить Firebase ресурсов и приложение к существующему проекту Google Cloud , который в настоящее время не пользуется услугами Firebase.

Вы можете перейти к определенным разделам этой страницы, если просто хотите:

Перед выполнением каких - либо действий на этой странице, убедитесь , что вы включите API .

Для получения информации об управлении доступом к API Firebase Management, посетите документацию API Cloud Identity Management Access (IAM) .

Прежде чем вы начнете

Перед тем, как начать, вам необходимо включить API управления для проекта Google Cloud и сгенерировать маркер доступа .

Включите Management REST API для своего проекта Google Cloud

Если вы еще не сделали, вам необходимо включить API Firebase управления для использования с проектом Google Cloud.

  1. Откройте API Firebase Management страницу в консоли Google API.
  2. При появлении запроса выберите свой проект Google Cloud.
  3. Нажмите кнопку Включить на странице API Firebase управления.

Создайте свой токен доступа к 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.

Вы можете добавить Firebase Android App к существующему проекту Firebase.

ЗАПРОС

Вызов projects.androidApps.create . Вот как создать тело запроса:

  • Необходимый:

    • packageName : каноническое имя пакета приложения Android , как она будет отображаться в консоли разработчиков приложений Google Play.
  • Необязательно, но рекомендуется:

    • displayName : Пользователь назначенный отображаемое имя приложения. Это значение полезно для нахождения вашего приложения позже в консоли Firebase .

В теле запроса для нашего примера мы будем использовать packageName и displayName :

{
  "displayName": "My Firebase Android App"
  "packageName": "com.firebase.android"
}

Вот пример для Node.js добавления Android-приложения Firebase в ваш проект 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 App, как уникальный Firebase appId . Operation автоматически удаляется после завершения.

Добавить сертификаты SHA

Вы можете добавить сертификаты SHA в любой существующий Firebase Android App, позвонив projects.androidApps.sha.create . Тело запроса для этого вызова метода должен иметь пустое name поля. Результатом этого вызова является недавно созданный экземпляр ShaCertificate .

При вызове projects.androidApps.sha.create , вам необходимо предоставить действительный SHA-1 или SHA-256 хэш сертификата. Вы можете получить SHA хэш вашего сертификата подписи с Gradle signingReport команды:

./gradlew signingReport

Для получения более подробной информации, посетите Google APIs для Android .

Вы можете связать существующую учетную запись 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 :

  1. Первая проверка определяет , является ли какие - либо существующими потоками данных в свойстве соответствует Google Analytics к любой существующей Firebase Apps в вашем FirebaseProject (на основе packageName или bundleId , связанную с потоком данных). Затем, если применимо, связываются потоки данных и приложения. Обратите внимание, что эта автоматическая привязка применяется только к приложениям Android и iOS.

  2. Если для ваших приложений 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 верно и response типа analyticsDetails , то FirebaseProject теперь связанно с указанной учетной записью Google Analytics. Operation автоматически удаляется после завершения.

Завершите настройку местоположения вашего проекта по умолчанию (необязательно)

Если ваш проект Firebase будет использовать облако 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 услуг , которые требуют настройки местоположения, как облако 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 на операцию пока значение done не true , и его response имеет тип google.protobuf.Empty . Если операция не выполняется, тело ответа error будет типа google.rpc.Status . Operation автоматически удаляется после завершения.