Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Configurar y administrar un proyecto de Firebase con la API REST de administración

La API REST Firebase Gestión permite la configuración programática y gestión de proyectos de base de fuego, incluidos los recursos de un proyecto base de fuego y Firebase Aplicaciones.

Esta visión general describe el flujo de trabajo general para agregar recursos de base de fuego y aplicaciones existentes a un proyecto de Google Cloud que actualmente no utilizan los servicios de base de fuego.

Puede saltar a secciones específicas de esta página si solo desea:

Antes de seguir cualquier paso en esta página, asegúrese de que habilita la API .

Para obtener información sobre la gestión de acceso a la API de administración Firebase, visite la documentación de la API de la nube de identidad Access Management (IAM) .

Antes de que empieces

Antes de empezar, tendrá que 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 no lo ha hecho, se le tenga que habilitar la API de administración Firebase para su uso con su proyecto de Google Cloud.

  1. Abrir la API de administración Firebase página en la consola de las API de Google.
  2. Cuando se le solicite, seleccione su proyecto de Google Cloud.
  3. Haga clic en Activar en la página API de administración Firebase.

Genere su token de acceso a la API

A continuación, se muestra un ejemplo de Node.js que recupera su token de acceso.

En primer lugar, si usted no está en un entorno de nube de Google, establecer el GOOGLE_APPLICATION_CREDENTIALS variable de entorno de la ruta de acceso a su clave de 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 Firebase Admin 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);
      });
}

Encuentra el nombre del recurso de tu proyecto

Puede encontrar los proyectos de Google Cloud que están disponibles para agregar servicios de Firebase.

PEDIDO

Llamada availableProjects.list . El cuerpo de la solicitud para esta llamada 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 la respuesta de una llamada a availableProjects.list contiene una lista de ProjectInfo objetos. Si la lista de proyectos es demasiado largo, el cuerpo de la respuesta también contiene una nextPageToken que se puede utilizar como un parámetro de consulta para obtener la siguiente página de proyectos.

He aquí un ejemplo de cuerpo respuesta de un availableProjects.list llamada:

{
  "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 project campo proporciona el nombre del recurso único a nivel mundial para un proyecto.

Se puede utilizar cualquier project valor indicado en la respuesta de availableProjects.list a agregar servicios firebase o agregar aplicaciones a su proyecto.

En la siguiente sección, vamos a añadir servicios a base de fuego First Cloud Project utilizando el projects/first-gcp-project nombre del recurso.

Agrega servicios de Firebase a tu proyecto

Los proyectos de Google Cloud pueden aprovechar los servicios que ofrece Firebase. En esta sección, aprenderá a agregar servicios de Firebase a su proyecto existente de Google Cloud mediante programación. Tenga en cuenta que también se puede añadir servicios de base de fuego a su proyecto de Google Cloud existente en la consola Firebase .

PEDIDO

Llamada projects.addFirebase . El cuerpo de la solicitud para esta llamada 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 poder llamar a otros extremos relacionados con Firebase para su proyecto, la operación debe ser exitosa.

Para comprobar si la operación tiene éxito, puede llamar operations.get sobre la operación hasta que el valor de done es true y su response es de tipo FirebaseProject . Si la operación falla, el error se establece en google.rpc.Status .

Aquí está el cuerpo de la respuesta de un operations.get llamada:

{
  "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 es true y la response tipo es un FirebaseProject , el proyecto de Google Cloud cuenta ahora con servicios de base de fuego. La respuesta también contiene otra información útil acerca de su recién creada FirebaseProject , al igual que su projectNumber y sus predeterminados de resources . La Operation se elimina automáticamente después de la finalización.

Agrega Firebase Apps a tu proyecto

Muchas aplicaciones diferentes pueden utilizar una FirebaseProject , incluyendo iOS, Android y aplicaciones web. En esta sección, usted aprenderá cómo agregar Firebase Aplicaciones a su actual FirebaseProject mediante programación. Tenga en cuenta que también se puede añadir Firebase Apps para su proyecto Firebase existente en la consola Firebase .

Seleccione un tipo de aplicación de Firebase para agregar a su proyecto de Firebase.

Puede añadir una aplicación de Android Firebase a su proyecto Firebase existente.

PEDIDO

Llamada projects.androidApps.create . A continuación, le indicamos cómo construir su cuerpo de solicitud:

  • Requerido:

    • packageName : El nombre del paquete canónica de la aplicación de Android como aparecería en la consola de desarrolladores de Google Play.
  • Opcional, pero recomendado:

    • displayName : El nombre de visualización asignada por el usuario de la aplicación. Este valor es útil para encontrar su aplicación más adelante en la consola Firebase .

En el cuerpo de la petición para nuestro ejemplo, vamos a utilizar packageName y displayName :

{
  "displayName": "My Firebase Android App"
  "packageName": "com.firebase.android"
}

A continuación, se muestra un ejemplo de Node.js para agregar una aplicación de Firebase para Android a su 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 poder llamar a otros extremos relacionados con Firebase para su proyecto, la operación debe ser exitosa.

Para comprobar si la operación tiene éxito, puede llamar operations.get sobre la operación hasta que el valor de done es true y su response es de tipo AndroidApp . Si la operación falla, el error se establece en google.rpc.Status .

Aquí está el cuerpo de la respuesta de un operations.get llamada:

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

Desde done es true y la response tipo es un AndroidApp , la FirebaseProject tiene ahora una AndroidApp . La respuesta también contiene otra información útil acerca de su recién creada Firebase Android de la aplicación, como la única Firebase appId . La Operation se elimina automáticamente después de la finalización.

Agregar certificados SHA

Puede agregar certificados SHA a cualquier aplicación de Android Firebase existente llamando projects.androidApps.sha.create . El cuerpo de la petición para esta llamada de método debe tener un vacío name campo. El resultado de esta llamada es una instancia recién creada de ShaCertificate .

Al llamar projects.androidApps.sha.create , es necesario proporcionar una válida SHA-1 o SHA-256 certificado hash. Usted puede obtener el hash SHA de su certificado de firma con el Gradle signingReport comando:

./gradlew signingReport

Para obtener más información, visite el API de Google para Android .

Puede vincular una ya existente cuenta de Google Analytics a su actual FirebaseProject mediante programación. Tenga en cuenta que también puede vincular su proyecto Firebase existente a Google Analytics en el integraciones pestaña de configuración de su proyecto.

La llamada a projects.addGoogleAnalytics requiere una analytics_resource , que puede ser o bien una analyticsAccountId o un analyticsPropertyId :

  • Especificar una existente analyticsAccountId a disposición una nueva propiedad de Google Analytics dentro de la cuenta especificada y asociar la nueva propiedad con su proyecto Firebase.

  • Especificar una existente analyticsPropertyId asociar la propiedad de Google Analytics con su proyecto Firebase.

Usted puede encontrar tanto en su analyticsAccountId y cualquier existente analyticsPropertyId en el sitio web de Google Analytics .

Cuando se llama a projects.addGoogleAnalytics :

  1. La primera verificación determina si los datos existentes en el arroyos corresponden propiedad de Google Analytics para cualquier existente Aplicaciones Firebase en su FirebaseProject (basado en el packageName o bundleId asociada 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 aplicaciones de iOS.

  2. Si no se encuentran flujos de datos correspondientes para sus aplicaciones de Firebase, se aprovisionan nuevos flujos de datos en la propiedad de Google Analytics para cada una de sus aplicaciones de Firebase. Tenga en cuenta que siempre se proporciona un nuevo flujo de datos para una aplicación web, incluso si se asoció anteriormente con un flujo de datos en su propiedad de Analytics.

Más información sobre la jerarquía y la estructura de las cuentas de Google Analytics en la documentación de Analytics .

PEDIDO

Call projects.addGoogleAnalytics .

En el cuerpo de la petición para nuestro ejemplo llamada a project.addGoogleAnalytics , especificaremos nuestros cuenta de Google Analytics analyticsAccountId . Esta disposición llamada voluntad 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 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 poder llamar a otros extremos relacionados con Firebase para su proyecto, la operación debe ser exitosa.

Para comprobar si la operación tiene éxito, puede llamar operations.get sobre la operación hasta que el valor de done es true y la response es del tipo analyticsDetails . Si la operación falla, el error se establece en google.rpc.Status .

Aquí está el cuerpo de la respuesta de un operations.get llamada:

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

Desde done es cierto y la response tipo es analyticsDetails , la FirebaseProject está ahora vinculada a la cuenta de Google Analytics especificado. La Operation se elimina automáticamente después de la finalización.

Finaliza la ubicación predeterminada de tu proyecto (opcional)

Si su proyecto Firebase utilizará la nube Firestore, almacenamiento en la nube, o una aplicación de App Engine, puede finalizar el Google Cloud Platform (GCP) de localización de recursos por defecto para su proyecto de programación. Tenga en cuenta que también puede seleccionar una ubicación en la consola Firebase .

Antes de configurar esta ubicación, echa un vistazo a Seleccione las ubicaciones para su proyecto para obtener información sobre qué ubicación es la mejor para su proyecto. También debe llamar projects.availableLocations para devolver una lista de las ubicaciones válidas para su proyecto ya que si su proyecto es parte de una organización de la nube de Google, a continuación, sus políticas de la organización podrían restringir las ubicaciones que son válidos para su proyecto.

Al llamar a este defaultLocation.finalize método crea una aplicación de App Engine con un cubo de almacenamiento en la nube por defecto se encuentra en el locationId que usted proporcione en el cuerpo de la petición.

La ubicación de recursos GCP por defecto ya se haya especificado si el Project ya cuenta con una aplicación de App Engine o esta defaultLocation.finalize método fue llamado previamente.

PEDIDO

Llamada projects.defaultLocation.finalize . A continuación, le indicamos cómo construir su cuerpo de solicitud:

  • Requerido:

    • locationId : El lugar donde se almacenan los datos de los servicios de GCP que requieren una configuración de ubicación, como la nube Firestore o almacenamiento en la nube.
{
  "locationId": "us-west2"
}

A continuación, se muestra un ejemplo de Node.js para finalizar 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 poder llamar a otros extremos relacionados con Firebase para su proyecto, la operación debe ser exitosa.

Para comprobar si la operación tiene éxito se le puede llamar operations.get sobre la operación hasta que el valor de done es true y su response es de tipo google.protobuf.Empty . Si la operación tiene éxito, el cuerpo de la respuesta error será de tipo google.rpc.Status . La Operation se elimina automáticamente después de la finalización.