Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Configure e gerencie um projeto do Firebase usando a API REST de gerenciamento

A API Firebase Gestão RESTO permite configuração programática e gestão de projectos Firebase, incluindo recursos Firebase de um projeto e Firebase Apps.

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

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

Antes de seguir todos os passos nesta página, certifique-se que você ativar a API .

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

Antes de você começar

Antes de começar, você precisa habilitar a API de gerenciamento para o seu projeto do Google Cloud e gerar seu token de acesso .

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

Se você não tiver, você precisa habilitar a API de Gestão Firebase para uso com seu projeto do Google Cloud.

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

Gere seu token de acesso de API

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

Primeiro, se você não estiver em um ambiente Google Cloud, defina o GOOGLE_APPLICATION_CREDENTIALS variável de ambiente para o caminho para a 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 que estão disponíveis para adicionar serviços do Firebase.

SOLICITAR

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

Aqui está um exemplo de Node.js para 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 ProjectInfo objetos. Se a lista de projetos é muito longo, o corpo da resposta também contém um nextPageToken que você pode usar como um parâmetro de consulta para obter a próxima página de projetos.

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

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

Este exemplo de resposta tem dois projetos do Google Cloud que podem ter serviços do Firebase adicionados a eles. Note-se que o project campo fornece o nome do recurso exclusivo global para um projeto.

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

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

Adicione 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 maneira programática. Note que você também pode adicionar serviços Firebase ao seu projeto do Google Cloud existente na consola Firebase .

SOLICITAR

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

Aqui está 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 for bem sucedida, você pode chamar operations.get sobre a operação até que o valor de done é true e sua response é do tipo FirebaseProject . Se a operação falhar, o error está definido para google.rpc.Status .

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

{
  "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"
    }
  }
}

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

Adicione aplicativos do Firebase ao seu projeto

Muitos aplicativos diferentes podem usar um FirebaseProject , incluindo iOS, Android e aplicativos web. Nesta seção, você vai aprender como adicionar Firebase Apps para o seu actual FirebaseProject programaticamente. Note que você também pode adicionar Firebase Apps ao seu projeto Firebase existente na consola Firebase .

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

Você pode vincular um existente conta do Google Analytics para o seu actual FirebaseProject programaticamente. Note que você também pode vincular seu projeto Firebase existente para o Google Analytics na Integrações guia de Configurações do Projeto.

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

  • Especificar um existente analyticsAccountId para provisionar uma nova propriedade do Google Analytics dentro da conta especificada e associar a nova propriedade com o seu projeto Firebase.

  • Especificar um existente analyticsPropertyId para associar a propriedade do Google Analytics com o seu projeto Firebase.

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

Quando você chama projects.addGoogleAnalytics :

  1. A primeira verificação determina se transmite todos os dados existentes no Google Analytics correspondem propriedade para qualquer Firebase Apps existente em sua FirebaseProject (baseado no packageName ou bundleId associado ao fluxo de dados). Em seguida, conforme aplicável, os fluxos de dados e aplicativos são vinculados. Observe que essa vinculação automática só se aplica a aplicativos Android e aplicativos iOS.

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

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

SOLICITAR

Chamada projects.addGoogleAnalytics .

No corpo da solicitação para o nosso exemplo chamada para project.addGoogleAnalytics , vamos especificar nossos conta do Google Analytics analyticsAccountId . Esta disposição chamada será uma nova propriedade do Google Analytics e associar a nova propriedade com o FirebaseProject .

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

Aqui está um exemplo de Node.js para vincular um projeto 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 for bem sucedida, você pode chamar operations.get sobre a operação até que o valor de done é true ea response é do tipo analyticsDetails . Se a operação falhar, o error está definido para google.rpc.Status .

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

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

Desde done é verdadeiro ea response tipo é analyticsDetails , o FirebaseProject agora está vinculado à conta do Google Analytics especificada. A Operation é automaticamente eliminado após a conclusão.

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

Se o seu projeto Firebase usará Nuvem Firestore, Cloud Storage, ou um aplicativo App Engine, você pode finalizar o Cloud Platform Google (GCP) localização de recurso padrão para o seu projeto de programação. Note que você também pode selecionar um local na consola Firebase .

Antes de definir este local, veja Selecionar locais para o seu projeto para obter informações sobre qual o local que é melhor para o seu projeto. Você também deve chamar projects.availableLocations para retornar uma lista dos locais válidos para o seu projeto, porque se o seu projeto é parte de uma organização Google Cloud, em seguida, suas políticas da organização pode restringir quais locais são válidos para o seu projeto.

Chamar esse defaultLocation.finalize método cria uma aplicação App Engine com um padrão intervalo do Cloud Storage localizado na locationId que você fornecer no corpo da solicitação.

A localização de recursos GCP padrão já pode ter sido especificado se o Project já tem um aplicativo App Engine ou este defaultLocation.finalize método foi anteriormente chamado.

SOLICITAR

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

  • Obrigatório:

    • locationId : O local onde seus dados são armazenados para os serviços de GCP que exigem uma definição de localização, como Nuvem 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 for bem sucedida, você pode chamar operations.get sobre a operação até que o valor de done é true e sua response é do tipo google.protobuf.Empty . Se a operação for bem sucedida, o corpo da resposta error será do tipo google.rpc.Status . A Operation é automaticamente eliminado após a conclusão.