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:
- Adicionar serviços do Firebase ao seu projeto
- Adicionar aplicativos do Firebase ao seu projeto do Firebase
- Vincule seu projeto do Firebase a uma conta do Google Analytics
- Finalize o local padrão do seu projeto
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.
- Abra a página da API Firebase Management no console de APIs do Google.
- Quando solicitado, selecione seu projeto do Google Cloud.
- 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.
Vincule seu projeto do Firebase a uma conta do Google Analytics (opcional)
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
:
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 nopackageName
oubundleId
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.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.