La API de REST de Firebase Management habilita la configuración y la administración programática de los proyectos de Firebase, incluidos los recursos y las apps de Firebase de un proyecto.
En esta descripción, se describe el flujo de trabajo general para agregar aplicaciones y recursos de Firebase a un proyecto de Google Cloud existente que no está usando servicios de Firebase.
Puedes ir directamente a secciones específicas de esta página si solo quieres hacer alguna de estas acciones:
- Agregar servicios de Firebase a tu proyecto
- Agregar aplicaciones de Firebase a tu proyecto de Firebase
- Vincular tu proyecto de Firebase con una cuenta de Google Analytics
- Finalizar la ubicación predeterminada de tu proyecto
Antes de seguir los pasos que se indican en esta página, asegúrate de habilitar la API.
Si quieres obtener información sobre la administración de acceso de la API de Firebase Management, consulta la documentación de la API de Cloud Identity & Access Management (IAM).
Antes de comenzar
Antes de comenzar, debes habilitar la API de Management en tu proyecto de Google Cloud y generar el token de acceso.
Habilita la API de REST de Management en tu proyecto de Google Cloud
Si aún no lo has hecho, deberás habilitar la API de Firebase Management para usarla en tu proyecto de Google Cloud.
- Abre la página de la API de Firebase Management en la Consola de API de Google.
- Cuando se te solicite, selecciona tu proyecto de Google Cloud.
- Haz clic en Habilitar en la página de la API de Firebase Management.
Genera tu token de acceso a la API
A continuación, se muestra un ejemplo de Node.js en el que se recupera tu token de acceso.
Primero, si no estás en un entorno de Google Cloud, configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
como la ruta a la clave de tu cuenta de servicio.
Linux o macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
Con PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Luego, usa el SDK de Firebase Admin para obtener un token de acceso de las credenciales de tu 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);
});
}
Busca el nombre de recurso de tu proyecto
Puedes encontrar los proyectos de Google Cloud que están disponibles para agregar servicios de Firebase.
SOLICITUD
Llama a
availableProjects.list
.
El cuerpo de la solicitud de esta llamada debe estar vacío.
A continuación, se muestra un ejemplo de Node.js en el que se solicita una lista de los proyectos disponibles de 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);
}
}
RESULTADO
El cuerpo de la 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 puedes usar como parámetro de búsqueda para obtener la siguiente página de proyectos.
A continuación, se muestra un ejemplo de cuerpo de respuesta de una llamada availableProjects.list
:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
En esta respuesta de ejemplo, hay dos proyectos de Google Cloud a los que se les pueden agregar servicios de Firebase. Ten en cuenta que el campo project
proporciona el nombre de recurso único a nivel global en un proyecto.
Puedes usar cualquier valor de project
que aparezca en la respuesta de availableProjects.list
para agregar servicios de Firebase o agregar apps a tu proyecto.
En la siguiente sección, agregaremos los servicios de Firebase a First Cloud Project
con el nombre de 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ás a agregar servicios de Firebase a tu proyecto de Google Cloud existente de manera programática. Ten en cuenta que también puedes agregar servicios de Firebase a tu proyecto de Google Cloud en Firebase console.
SOLICITUD
Llama a
projects.addFirebase
.
El cuerpo de la solicitud de esta llamada debe estar vacío.
A continuación, se muestra un ejemplo de Node.js en el que se agregan servicios de Firebase a tu 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 extremos relacionados con Firebase para tu proyecto, la operación debe realizarse correctamente.
Para verificar que esto haya sucedido, puedes llamar a operations.get
en la operación hasta que el valor de done
sea true
y su response
sea del tipo FirebaseProject
. Si la operación falla, su error
se establece en google.rpc.Status
.
Este es el cuerpo de la respuesta de una llamada a 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"
}
}
}
Dado que 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 tu FirebaseProject
recién creado, como su projectNumber
y sus resources
predeterminados. Operation
se borrará de forma automática después de que se complete la llamada.
Agrega apps de Firebase a tu proyecto
Muchas apps diferentes pueden usar un FirebaseProject
, incluidas las apps para iOS, Android y la Web. En esta sección, aprenderás a agregar apps de Firebase a tu FirebaseProject
de manera programática. Ten en cuenta que también puedes agregar apps de Firebase a tu proyecto de Firebase en Firebase console.
Selecciona un tipo de app de Firebase para agregar a tu proyecto de Firebase.
Vincula tu proyecto de Firebase con una cuenta de Google Analytics (opcional)
Puedes vincular una cuenta de Google Analytics a tu FirebaseProject
de manera programática. Ten en cuenta que también puedes vincular tu proyecto de Firebase con Google Analytics en la pestaña Integraciones de la página Configuración del proyecto.
La llamada a projects.addGoogleAnalytics
requiere un analytics_resource
, que puede ser un analyticsAccountId
o un analyticsPropertyId
:
Especifica un
analyticsAccountId
existente para aprovisionar una propiedad de Google Analytics nueva en la cuenta especificada y asocia esta propiedad con tu proyecto de Firebase.Especifica un
analyticsPropertyId
existente para asociar la propiedad de Google Analytics con tu proyecto de Firebase.
Puedes encontrar tu analyticsAccountId
y cualquier analyticsPropertyId
existente en el sitio web de Google Analytics.
Ten en cuenta lo siguiente cuando llames a projects.addGoogleAnalytics
:
La primera verificación determina si cualquier flujo de datos existente en la propiedad de Google Analytics corresponde a alguna app de Firebase en tu
FirebaseProject
(en función de sipackageName
obundleId
están asociados con el flujo de datos). Luego, según corresponda, se vincularán los flujos de datos y las apps. Ten en cuenta que esta vinculación automática solo se aplica a las apps para iOS y Android.Si no se encuentran flujos de datos correspondientes en tus apps de Firebase, se aprovisionarán nuevos flujos de datos en la propiedad de Google Analytics para cada una de tus apps de Firebase. Ten en cuenta que siempre se aprovisionará una transmisión de datos nueva para una aplicación web, incluso si se asoció previamente con un flujo de datos en tu propiedad de Analytics.
Obtén más información sobre la jerarquía y la estructura de las cuentas de Google Analytics en la documentación de Analytics.
SOLICITUD
Llama a
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 el FirebaseProject
.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
A continuación, se muestra un ejemplo de Node.js en el que se vincula 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 extremos relacionados con Firebase en tu proyecto, la operación debe realizarse con éxito.
Para verificar si la operación se realizó correctamente, puedes llamar a operations.get
en la operación hasta que el valor de done
sea true
y el response
sea del tipo analyticsDetails
. Si la operación falla, su error
se establece en google.rpc.Status
.
Este es el cuerpo de la respuesta de una llamada a 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 que el tipo response
es analyticsDetails
, FirebaseProject
ahora estará vinculado a la cuenta de Google Analytics especificada. Operation
se borrará de forma automática después de que se complete la llamada.
Finaliza la ubicación predeterminada de tu proyecto (opcional)
Si tu proyecto de Firebase usará Cloud Firestore, Cloud Storage o una aplicación de App Engine, puedes finalizar la ubicación predeterminada para los recursos de Google Cloud Platform (GCP) en tu proyecto de manera programática. Ten en cuenta que también puedes seleccionar una ubicación en Firebase console.
Antes de configurar esta ubicación, revisa Selecciona ubicaciones para tu proyecto a fin de obtener información acerca de qué ubicación es la mejor para tu proyecto. También debes llamar a projects.availableLocations
a fin de mostrar una lista de las ubicaciones válidas para tu proyecto porque, si tu proyecto forma parte de una organización de Google Cloud, las políticas de tu organización podrían restringir las ubicaciones válidas para tu proyecto.
Llamar a este método defaultLocation.finalize
crea una aplicación de App Engine con un bucket de Cloud Storage predeterminado ubicado en el locationId
que proporciones en el cuerpo de la solicitud.
Es posible que la ubicación predeterminada para los recursos de GCP ya esté especificada si el Project
ya tiene una aplicación de App Engine o si se llamó a este método defaultLocation.finalize
anteriormente.
SOLICITUD
Llama a
projects.defaultLocation.finalize
.
Aquí te mostramos cómo crear el cuerpo de la solicitud:
Obligatorio:
locationId
: La ubicación en la que 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í te mostramos un ejemplo de Node.js en el que se finaliza la ubicación predeterminada de tu 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 extremos relacionados con Firebase para tu proyecto, la operación debe realizarse correctamente.
Para verificar que esto haya sucedido, puedes llamar a 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 se realiza correctamente, el cuerpo de la respuesta error
será de tipo google.rpc.Status
. Operation
se borrará de forma automática después de que se complete la llamada.