La API REST de Firebase Management permite la configuración y administración programática de proyectos de Firebase, incluidos los recursos de Firebase de un proyecto y las aplicaciones de Firebase.
Esta descripción general describe el flujo de trabajo general para agregar recursos y aplicaciones de Firebase a un proyecto de Google Cloud existente que actualmente no utiliza servicios de Firebase.
Puede saltar a secciones específicas de esta página si solo desea:
- Agrega servicios de Firebase a tu proyecto
- Agregue aplicaciones de Firebase a su proyecto de Firebase
- Vincula tu proyecto de Firebase a una cuenta de Google Analytics
- Finaliza la ubicación predeterminada de tu proyecto
Antes de seguir cualquier paso en esta página, asegúrese de habilitar la API .
Para obtener información sobre la administración de acceso a la API de Firebase Management, visita la documentación de la API de Cloud Identity Access Management (IAM) .
Antes de que empieces
Antes de comenzar, deberá habilitar la API de administración para su proyecto de Google Cloud y generar su token de acceso .
Habilite la API REST de administración para su proyecto de Google Cloud
Si aún no lo has hecho, deberás habilitar la API de administración de Firebase para usarla con tu proyecto de Google Cloud.
- Abra la página de la API de administración de Firebase en la consola de API de Google.
- Cuando se le solicite, seleccione su proyecto de Google Cloud.
- Haga clic en Habilitar en la página API de administración de Firebase.
Genera tu token de acceso API
A continuación se muestra un ejemplo de Node.js que recupera su token de acceso.
Primero, si no estás en un entorno de Google Cloud, configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
en la ruta a la clave de tu cuenta de servicio.
Linux o macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
ventanas
Con PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Luego, use el SDK de administrador de Firebase para obtener un token de acceso de las credenciales de su cuenta de servicio:
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);
});
}
Encuentre el nombre del recurso de su proyecto
Puede encontrar los proyectos de Google Cloud que están disponibles para agregar servicios de Firebase.
PEDIDO
Llame availableProjects.list
. El cuerpo de la solicitud para esta convocatoria debe estar vacío.
A continuación se muestra un ejemplo para que Node.js solicite una lista de proyectos de Google Cloud disponibles:
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
El cuerpo de respuesta de una llamada a availableProjects.list
contiene una lista de objetos ProjectInfo
. Si la lista de proyectos es demasiado larga, el cuerpo de la respuesta también contiene un nextPageToken
que puede utilizar como parámetro de consulta para obtener la siguiente página de proyectos.
A continuación se muestra un cuerpo de respuesta de ejemplo de una llamada a availableProjects.list
:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
Esta respuesta de ejemplo tiene dos proyectos de Google Cloud a los que se les pueden agregar servicios de Firebase. Tenga en cuenta que el campo project
proporciona el nombre de recurso globalmente único para un proyecto.
Puede usar cualquier valor project
enumerado en la respuesta de availableProjects.list
para agregar servicios de Firebase o agregar aplicaciones a su proyecto.
En la siguiente sección, agregaremos servicios de Firebase a First Cloud Project
usando el nombre del recurso projects/first-gcp-project
.
Agrega servicios de Firebase a tu proyecto
Los proyectos de Google Cloud pueden aprovechar los servicios que ofrece Firebase. En esta sección, aprenderá cómo agregar servicios de Firebase a su proyecto existente de Google Cloud mediante programación. Tenga en cuenta que también puede agregar servicios de Firebase a su proyecto de Google Cloud existente en Firebase console .
PEDIDO
Llame projects.addFirebase
. El cuerpo de la solicitud para esta convocatoria debe estar vacío.
A continuación se muestra un ejemplo de Node.js para agregar servicios de Firebase a su proyecto de 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
El resultado de una llamada a projects.addFirebase
es una Operation
. Antes de que puedas llamar a otros puntos finales relacionados con Firebase para tu proyecto, la operación debe ser exitosa.
Para verificar si la operación fue exitosa, puede llamar a operations.get
en la operación hasta que el valor de done
sea true
y su response
sea de tipo FirebaseProject
. Si la operación falla, su error
se establece en google.rpc.Status
.
Aquí está el cuerpo de respuesta de una llamada 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
es true
y el tipo response
es FirebaseProject
, el proyecto de Google Cloud ahora tiene servicios de Firebase. La respuesta también contiene otra información útil sobre su FirebaseProject
recién creado, como su projectNumber
y sus resources
predeterminados. La Operation
se elimina automáticamente una vez finalizada.
Agrega aplicaciones de Firebase a tu proyecto
Muchas aplicaciones diferentes pueden usar FirebaseProject
, incluidas iOS, Android y aplicaciones web. En esta sección, aprenderá cómo agregar Firebase Apps a su FirebaseProject
existente mediante programación. Tenga en cuenta que también puede agregar Firebase Apps a su proyecto de Firebase existente en Firebase console .
Selecciona un tipo de aplicación de Firebase para agregarla a tu proyecto de Firebase.
Vincula tu proyecto de Firebase a una cuenta de Google Analytics (opcional)
Puede vincular una cuenta de Google Analytics existente a su FirebaseProject
existente mediante programación. Tenga en cuenta que también puede vincular su proyecto Firebase existente a Google Analytics en la pestaña Integraciones de la Configuración del proyecto .
La llamada a projects.addGoogleAnalytics
requiere un analytics_resource
, que puede ser un analyticsAccountId
o un analyticsPropertyId
:
Especifique un
analyticsAccountId
existente para aprovisionar una nueva propiedad de Google Analytics dentro de la cuenta especificada y asociar la nueva propiedad con su proyecto de Firebase.Especifique un
analyticsPropertyId
existente para asociar la propiedad de Google Analytics con su proyecto de Firebase.
Puede encontrar tanto su analyticsAccountId
como cualquier analyticsPropertyId
existente en el sitio web de Google Analytics .
Cuando llamas projects.addGoogleAnalytics
:
La primera verificación determina si algún flujo de datos existente en la propiedad de Google Analytics corresponde a alguna aplicación Firebase existente en su
FirebaseProject
(según elpackageName
obundleId
asociado con el flujo de datos). Luego, según corresponda, se vinculan los flujos de datos y las aplicaciones. Tenga en cuenta que este enlace automático solo se aplica a aplicaciones de Android y de iOS.Si no se encuentran flujos de datos correspondientes para sus Firebase Apps, se aprovisionan nuevos flujos de datos en la propiedad de Google Analytics para cada una de sus Firebase Apps. Tenga en cuenta que siempre se aprovisiona un nuevo flujo de datos para una aplicación web, incluso si estaba previamente asociado con un flujo de datos en su propiedad de Analytics.
Obtenga más información sobre la jerarquía y estructura de las cuentas de Google Analytics en la documentación de Analytics .
PEDIDO
Llame projects.addGoogleAnalytics
.
En el cuerpo de la solicitud de nuestra llamada de ejemplo a project.addGoogleAnalytics
, especificaremos nuestra cuenta de Google Analytics analyticsAccountId
. Esta llamada aprovisionará una nueva propiedad de Google Analytics y asociará la nueva propiedad con FirebaseProject
.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
A continuación se muestra un ejemplo de Node.js para vincular un proyecto de Firebase con una cuenta de 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
El resultado de una llamada a projects.addGoogleAnalytics
es una Operation
. Antes de que puedas llamar a otros puntos finales relacionados con Firebase para tu proyecto, la operación debe ser exitosa.
Para verificar si la operación fue exitosa, puede llamar a operations.get
en la operación hasta que el valor de done
sea true
y la response
sea de tipo analyticsDetails
. Si la operación falla, su error
se establece en google.rpc.Status
.
Aquí está el cuerpo de respuesta de una llamada operations.get
:
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
Dado que done
es verdadero y el tipo response
es analyticsDetails
, FirebaseProject
ahora está vinculado a la cuenta de Google Analytics especificada. La Operation
se elimina automáticamente una vez finalizada.
Finalice la ubicación predeterminada de su proyecto (opcional)
Si tu proyecto de Firebase utilizará Cloud Firestore, Cloud Storage o una aplicación de App Engine, puedes finalizar la ubicación de recursos predeterminada de Google Cloud Platform (GCP) para tu proyecto mediante programación. Tenga en cuenta que también puede seleccionar una ubicación en Firebase console .
Antes de configurar esta ubicación, consulte Seleccionar ubicaciones para su proyecto para obtener información sobre cuál es la mejor ubicación para su proyecto. También debes llamar a projects.availableLocations
para obtener una lista de las ubicaciones válidas para tu proyecto porque si tu proyecto es parte de una organización de Google Cloud, las políticas de tu organización podrían restringir qué ubicaciones son válidas para tu proyecto.
Llamar a este método defaultLocation.finalize
crea una aplicación de App Engine con un depósito de Cloud Storage predeterminado ubicado en el locationId
que proporcionas en el cuerpo de la solicitud.
Es posible que la ubicación predeterminada del recurso GCP ya se haya especificado si el Project
ya tiene una aplicación App Engine o si se llamó previamente a este método defaultLocation.finalize
.
PEDIDO
Llame projects.defaultLocation.finalize
. A continuación se explica cómo construir el cuerpo de su solicitud:
Requerido:
-
locationId
: la ubicación donde se almacenan tus datos para los servicios de GCP que requieren una configuración de ubicación, como Cloud Firestore o Cloud Storage.
-
{
"locationId": "us-west2"
}
Aquí hay un ejemplo para que Node.js finalice la ubicación predeterminada de su proyecto:
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
El resultado de una llamada a projects.defaultLocation.finalize
es una Operation
. Antes de que puedas llamar a otros puntos finales relacionados con Firebase para tu proyecto, la operación debe ser exitosa.
Para verificar si la operación fue exitosa, puede llamar operations.get
en la operación hasta que el valor de done
sea true
y su response
sea del tipo google.protobuf.Empty
. Si la operación no tiene éxito, el error
del cuerpo de la respuesta será del tipo google.rpc.Status
. La Operation
se elimina automáticamente una vez finalizada.