Check out what’s new from Firebase at Google I/O 2022. Learn more

Configurar e gerenciar um projeto do Firebase usando a API REST de gerenciamento

A API REST de gerenciamento do Firebase permite a configuração e o gerenciamento programáticos de projetos do Firebase, incluindo os recursos do Firebase de um projeto e os aplicativos do Firebase.

Esta visão geral descreve o fluxo de trabalho geral para adicionar recursos e aplicativos do Firebase a um projeto existente do Google Cloud que não usa serviços do Firebase no momento.

Você pode pular para seções específicas desta página se quiser apenas:

Antes de seguir qualquer etapa nesta página, certifique-se de ativar a API .

Para obter informações sobre o gerenciamento de acesso para a API Firebase Management, acesse a documentação da API Cloud Identity Access Management (IAM) .

Antes de você começar

Antes de começar, você precisará ativar a API de gerenciamento para seu projeto do Google Cloud e gerar seu token de acesso .

Ative a API REST de gerenciamento para seu projeto do Google Cloud

Caso ainda não tenha feito isso, você precisará ativar a Firebase Management API para uso com seu projeto do Google Cloud.

  1. Abra a página da API Firebase Management no console de APIs do Google.
  2. Quando solicitado, selecione seu projeto do Google Cloud.
  3. Clique em Ativar na página da API de gerenciamento do Firebase.

Gere seu token de acesso à API

Aqui está um exemplo de Node.js que recupera seu token de acesso.

Primeiro, se você não estiver em um ambiente do Google Cloud, defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho para sua chave de conta de serviço.

Linux ou macOS

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"

janelas

Com PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

Em seguida, use o SDK Admin do Firebase para obter um token de acesso das credenciais da sua conta de serviço:

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);
      });
}

Encontre o nome do recurso do seu projeto

Você pode encontrar os projetos do Google Cloud disponíveis para adicionar serviços do Firebase.

SOLICITAR

Chame availableProjects.list . O corpo da solicitação para esta chamada deve estar vazio.

Veja um exemplo para Node.js solicitar uma lista de projetos do Google Cloud disponíveis:

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);
  }
}

RESULTADO

O corpo da resposta de uma chamada para availableProjects.list contém uma lista de objetos ProjectInfo . Se a lista de projetos for muito longa, o corpo da resposta também conterá um nextPageToken que você pode usar como parâmetro de consulta para obter a próxima página de projetos.

Aqui está um exemplo de corpo de resposta de uma chamada availableProjects.list :

{
  "projectInfo": [
    {
      "project": "projects/first-cloud-project",
      "displayName": "First Cloud Project"
    },
    {
      "project": "projects/second-cloud-project",
      "displayName": "Second Cloud Project"
    }
  ]
}

Esta resposta de exemplo tem dois projetos do Google Cloud que podem ter serviços do Firebase adicionados a eles. Observe que o campo do project fornece o nome do recurso globalmente exclusivo para um projeto.

Você pode usar qualquer valor de project listado na resposta de availableProjects.list para adicionar serviços do Firebase ou adicionar aplicativos ao seu projeto.

Na próxima seção, adicionaremos os serviços do Firebase ao First Cloud Project usando o nome do recurso projects/first-gcp-project .

Adicionar serviços do Firebase ao seu projeto

Os projetos do Google Cloud podem aproveitar os serviços oferecidos pelo Firebase. Nesta seção, você aprenderá a adicionar serviços do Firebase ao seu projeto existente do Google Cloud de forma programática. Observe que você também pode adicionar serviços do Firebase ao seu projeto existente do Google Cloud no console do Firebase .

SOLICITAR

Chame projects.addFirebase . O corpo da solicitação para esta chamada deve estar vazio.

Veja um exemplo de Node.js para adicionar serviços do Firebase ao seu projeto do 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']);
  }
}

RESULTADO

O resultado de uma chamada para projects.addFirebase é uma Operation . Antes de chamar outros endpoints relacionados ao Firebase para seu projeto, a operação deve ser bem-sucedida.

Para verificar se a operação foi bem-sucedida, você pode chamar operations.get na operação até que o valor de done seja true e sua response seja do tipo FirebaseProject . Se a operação falhar, seu error será definido como google.rpc.Status .

Aqui está o corpo da resposta de uma chamada de 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"
    }
  }
}

Como done é true e o tipo de response é um FirebaseProject , o projeto do Google Cloud agora tem serviços do Firebase. A resposta também contém outras informações úteis sobre o FirebaseProject recém-criado, como projectNumber e resources padrão. A Operation é excluída automaticamente após a conclusão.

Adicionar aplicativos do Firebase ao seu projeto

Muitos aplicativos diferentes podem usar um FirebaseProject , incluindo iOS, Android e aplicativos da Web. Nesta seção, você aprenderá como adicionar aplicativos do Firebase ao seu FirebaseProject existente de forma programática. Observe que você também pode adicionar aplicativos do Firebase ao seu projeto Firebase existente no Firebase console .

Selecione um tipo de aplicativo do Firebase para adicionar ao seu projeto do Firebase.

Você pode vincular uma conta existente do Google Analytics ao seu FirebaseProject existente de forma programática. Observe que você também pode vincular seu projeto existente do Firebase ao Google Analytics na guia Integrações das Configurações do projeto .

A chamada para projects.addGoogleAnalytics requer um analytics_resource , que pode ser um analyticsAccountId ou um analyticsPropertyId :

  • Especifique um analyticsAccountId existente para provisionar uma nova propriedade do Google Analytics na conta especificada e associe a nova propriedade ao seu projeto do Firebase.

  • Especifique um analyticsPropertyId existente para associar a propriedade do Google Analytics ao seu projeto do Firebase.

Você pode encontrar seu analyticsAccountId e qualquer analyticsPropertyId existente no site do Google Analytics .

Ao chamar projects.addGoogleAnalytics :

  1. A primeira verificação determina se algum fluxo de dados existente na propriedade do Google Analytics corresponde a algum aplicativo do Firebase existente em seu FirebaseProject (com base no packageName ou bundleId associado ao fluxo de dados). Em seguida, conforme aplicável, os fluxos de dados e os aplicativos são vinculados. Observe que essa vinculação automática se aplica apenas a aplicativos Android e aplicativos iOS.

  2. Se nenhum fluxo de dados correspondente for encontrado para seus aplicativos do Firebase, novos fluxos de dados serão provisionados na propriedade do Google Analytics para cada um dos seus aplicativos do Firebase. Observe que um novo fluxo de dados é sempre provisionado para um aplicativo Web, mesmo que tenha sido associado anteriormente a um fluxo de dados em sua propriedade do Analytics.

Saiba mais sobre a hierarquia e a estrutura das contas do Google Analytics na documentação do Google Analytics .

SOLICITAR

Ligue para projects.addGoogleAnalytics .

No corpo da solicitação para nossa chamada de exemplo para project.addGoogleAnalytics , especificaremos nossa conta do Google Analytics analyticsAccountId . Essa chamada provisionará uma nova propriedade do Google Analytics e associará a nova propriedade ao FirebaseProject .

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

Veja um exemplo de Node.js para vincular um projeto do Firebase a uma conta do 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']);
  }
}

RESULTADO

O resultado de uma chamada para projects.addGoogleAnalytics é uma Operation . Antes de chamar outros endpoints relacionados ao Firebase para seu projeto, a operação deve ser bem-sucedida.

Para verificar se a operação foi bem-sucedida, você pode chamar operations.get na operação até que o valor de done seja true e a response seja do tipo analyticsDetails . Se a operação falhar, seu error será definido como google.rpc.Status .

Aqui está o corpo da resposta de uma chamada de operations.get :

{
  "name": "operations/...",
  "none": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
    "analyticsProperty": [
      {
        "id": "...",
        "displayName": "..."
      }
    ],
    "streamMappings": [
      {
        "app": "...",
        "streamId": "...",
        "measurementId": "..."
      }
    ]
  }
}

Como done é verdadeiro e o tipo de response é analyticsDetails , o FirebaseProject agora está vinculado à conta do Google Analytics especificada. A Operation é excluída automaticamente após a conclusão.

Finalize o local padrão do seu projeto (opcional)

Se seu projeto do Firebase usar o Cloud Firestore, o Cloud Storage ou um aplicativo do App Engine, você poderá finalizar o local de recurso padrão do Google Cloud Platform (GCP) para seu projeto de forma programática. Observe que você também pode selecionar um local no console do Firebase .

Antes de definir esse local, confira Selecionar locais para seu projeto para obter informações sobre qual local é melhor para seu projeto. Você também deve chamar projects.availableLocations para retornar uma lista dos locais válidos para seu projeto porque, se o projeto fizer parte de uma organização do Google Cloud, as políticas de sua organização poderão restringir quais locais são válidos para seu projeto.

Chamar esse método defaultLocation.finalize cria um aplicativo do App Engine com um bucket padrão do Cloud Storage localizado no locationId fornecido no corpo da solicitação.

O local padrão do recurso do GCP pode já ter sido especificado se o Project já tiver um aplicativo do App Engine ou se esse método defaultLocation.finalize foi chamado anteriormente.

SOLICITAR

Chame projects.defaultLocation.finalize . Veja como construir seu corpo de solicitação:

  • Requeridos:

    • locationId : o local onde seus dados são armazenados para serviços do GCP que exigem uma configuração de local, como Cloud Firestore ou Cloud Storage.
{
  "locationId": "us-west2"
}

Aqui está um exemplo de Node.js para finalizar o local padrão do seu projeto:

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']);
  }
}

RESULTADO

O resultado de uma chamada para projects.defaultLocation.finalize é uma Operation . Antes de chamar outros endpoints relacionados ao Firebase para seu projeto, a operação deve ser bem-sucedida.

Para verificar se a operação foi bem sucedida, você pode chamar operations.get na operação até que o valor de done seja true e sua response seja do tipo google.protobuf.Empty . Se a operação não for bem-sucedida, o error do corpo da resposta será do tipo google.rpc.Status . A Operation é excluída automaticamente após a conclusão.