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 general, se detalla el flujo de trabajo general para agregar apps y recursos de Firebase a un proyecto de Google Cloud existente que aún no usa los 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
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, visita la documentación de la API de Cloud Identity & Access Management (IAM).
Antes de comenzar
Antes de comenzar, debes habilitar la API de Management para tu proyecto de Google Cloud y generar el token de acceso.
Habilita la API de REST de Management para 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 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 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 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 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á automáticamente
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.
Puedes agregar una app de Firebase para Android a tu proyecto de Firebase.
SOLICITUD
Llama a
projects.androidApps.create
.
Aquí te mostramos cómo crear el cuerpo de la solicitud:
Obligatorio:
packageName
: El nombre del paquete canónico de la app para Android tal como aparecería en Google Play Console.
Opcional, pero recomendado:
displayName
: El nombre visible de la app asignado por el usuario. Este valor es útil para encontrar la app más adelante en Firebase console.
En el cuerpo de la solicitud de nuestro ejemplo, usaremos packageName
y displayName
:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
A continuación, se muestra un ejemplo de Node.js en el que se agrega una app de Firebase para Android a tu proyecto de Firebase:
const fetch = require('node-fetch');
async function addAndroidApp(projectId, displayName, packageName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/androidApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'packageName': packageName
}),
};
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.androidApps.create
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 AndroidApp
. 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.AndroidApp",
"name": "projects/first-cloud-project/androidApps/...",
"appId": "...",
"displayName": "My Firebase Android App",
"projectId": "first-cloud-project",
"packageName": "com.firebase.android"
}
}
Debido a que done
es true
, y el tipo response
es AndroidApp
, FirebaseProject
ahora tiene un valor AndroidApp
. Además, la respuesta contiene otra información útil sobre la app de Firebase para Android que acabas de crear, como el appId
único de Firebase. Operation
se borrará de forma automática después de que se complete la llamada.
Agrega certificados SHA
Puedes agregar certificados SHA a cualquier app de Firebase para Android si llamas a projects.androidApps.sha.create
.
El cuerpo de la solicitud de esta llamada de método debe tener un campo name
vacío.
El resultado de esta llamada es una instancia recién creada de ShaCertificate
.
Cuando llamas a projects.androidApps.sha.create
, debes proporcionar un hash de certificado SHA-1 o SHA-256 válido. Para obtener el hash SHA de tu certificado de firma con el comando signingReport
de Gradle, haz lo siguiente:
./gradlew signingReport
Si quieres obtener más información, visita la página sobre las API de Google para Android.
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.