Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Configurer et gérer un projet Firebase à l'aide de l'API REST de gestion

L' API de gestion Firebase REST permet de configurer des programmes et la gestion des projets Firebase, y compris les ressources et Firebase Firebase Apps d'un projet.

Cette vue d' ensemble décrit le processus général d'ajouter des ressources et des applications Firebase à un existant projet Google Cloud qui n'utilise actuellement des services Firebase.

Vous pouvez accéder à des sections spécifiques de cette page si vous souhaitez simplement :

Avant de suivre toutes les étapes de cette page, assurez - vous que vous activez l'API .

Pour plus d' informations sur la gestion d'accès pour l'API de gestion Firebase, consultez la documentation de l' API d' accès cloud de gestion des identités (IAM) .

Avant que tu commences

Avant de commencer, vous devrez activer l'API de gestion et de votre projet Google Cloud générer votre jeton d' accès .

Activer l'API REST de gestion pour votre projet Google Cloud

Si vous n'avez pas déjà, vous devrez activer l' API de gestion Firebase pour une utilisation avec votre projet Google Cloud.

  1. Ouvrez l' API de gestion Firebase page dans la console API Google.
  2. Lorsque vous y êtes invité, sélectionnez votre projet Google Cloud.
  3. Cliquez sur Activer sur la page de l' API de gestion Firebase.

Générez votre jeton d'accès API

Voici un exemple pour Node.js qui récupère votre jeton d'accès.

Tout d' abord, si vous n'êtes pas dans un environnement Google Cloud, définissez la GOOGLE_APPLICATION_CREDENTIALS variable d'environnement sur le chemin de la clé de votre compte de service.

Linux ou macOS

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"

les fenêtres

Avec PowerShell :

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

Ensuite, utilisez le SDK Firebase Admin pour obtenir un jeton d'accès à partir des identifiants de votre compte de service :

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);
      });
}

Trouvez le nom de la ressource de votre projet

Vous pouvez trouver les projets Google Cloud disponibles pour l'ajout de services Firebase.

DEMANDER

Appel availableProjects.list . Le corps de la requête pour cet appel doit être vide.

Voici un exemple permettant à Node.js de demander une liste des projets 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);
  }
}

RÉSULTAT

Le corps de la réponse d'un appel à availableProjects.list contient une liste de ProjectInfo objets. Si la liste des projets est trop long, le corps de la réponse contient également un nextPageToken que vous pouvez utiliser comme paramètre de requête pour obtenir la page suivante de projets.

Voici un corps de la réponse d'un exemple availableProjects.list appel:

{
  "projectInfo": [
    {
      "project": "projects/first-cloud-project",
      "displayName": "First Cloud Project"
    },
    {
      "project": "projects/second-cloud-project",
      "displayName": "Second Cloud Project"
    }
  ]
}

Cet exemple de réponse contient deux projets Google Cloud auxquels peuvent être ajoutés des services Firebase. Notez que le project champ fournit le nom de ressource unique au monde pour un projet.

Vous pouvez utiliser tout project valeur indiquée dans la réponse de availableProjects.list à ajouter des services Firebase ou ajouter des applications à votre projet.

Dans la section suivante, nous allons ajouter des services Firebase au First Cloud Project en utilisant les projects/first-gcp-project nom de la ressource.

Ajouter des services Firebase à votre projet

Les projets Google Cloud peuvent profiter des services offerts par Firebase. Dans cette section, vous apprendrez à ajouter des services Firebase à votre projet Google Cloud existant par programmation. Notez que vous pouvez également ajouter des services Firebase à votre projet Google Cloud existant dans la console Firebase .

DEMANDER

Appel projects.addFirebase . Le corps de la requête pour cet appel doit être vide.

Voici un exemple permettant à Node.js d'ajouter des services Firebase à votre projet 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']);
  }
}

RÉSULTAT

Le résultat d'un appel à projects.addFirebase est une Operation . Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit être réussie.

Pour vérifier si l'opération est réussie, vous pouvez appeler operations.get sur l'opération jusqu'à ce que la valeur de done est true et sa response est de type FirebaseProject . Si l'opération échoue, son error est réglé sur google.rpc.Status .

Voici le corps de la réponse d'un operations.get appel:

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

Depuis done est true et la response type est un FirebaseProject , le projet Google Cloud a maintenant des services Firebase. La réponse contient également d' autres informations utiles sur votre nouveau FirebaseProject , comme son projectNumber et sa valeur par défaut des resources . L' Operation est automatiquement supprimée après la fin.

Ajouter des applications Firebase à votre projet

De nombreuses applications peuvent utiliser un FirebaseProject , y compris iOS, Android et des applications Web. Dans cette section, vous apprendrez comment ajouter Firebase Apps à votre existant FirebaseProject programme. Notez que vous pouvez également ajouter Firebase Apps à votre projet Firebase existant dans la console Firebase .

Sélectionnez un type d'application Firebase à ajouter à votre projet Firebase.

Vous pouvez ajouter un Android App Firebase à votre projet Firebase existant.

DEMANDER

Appel projects.androidApps.create . Voici comment construire le corps de votre requête :

  • Obligatoire:

    • packageName : Le nom du package canonique de l'application Android comme il apparaît dans la console Google Play Developer.
  • Facultatif, mais recommandé :

    • displayName : Le nom d'affichage attribué par l' utilisateur de l'application. Cette valeur est utile pour trouver votre application plus tard dans la console Firebase .

Dans le corps de la demande pour notre exemple, nous allons utiliser packageName et displayName :

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

Voici un exemple pour Node.js pour ajouter une application Android Firebase à votre projet 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']);
  }
}

RÉSULTAT

Le résultat d'un appel à projects.androidApps.create est une Operation . Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit être réussie.

Pour vérifier si l'opération est réussie, vous pouvez appeler operations.get sur l'opération jusqu'à ce que la valeur de done est true et sa response est de type AndroidApp . Si l'opération échoue, son error est réglé sur google.rpc.Status .

Voici le corps de la réponse d'un operations.get appel:

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

Depuis done est true et la response type est un AndroidApp , le FirebaseProject dispose désormais d' une AndroidApp . La réponse contient également d' autres informations utiles sur votre nouveau Firebase Android App, comme le Firebase unique , appId . L' Operation est automatiquement supprimée après la fin.

Ajouter des certificats SHA

Vous pouvez ajouter des certificats SHA à toutes les applications Android Firebase existante en appelant projects.androidApps.sha.create . Le corps de demande de cet appel de méthode doit avoir un vide name champ. Le résultat de cet appel est une instance nouvellement créée de ShaCertificate .

Lorsque vous appelez projects.androidApps.sha.create , vous devez fournir un certificat valide de hachage SHA-1 ou SHA-256. Vous pouvez obtenir le hachage SHA de votre certificat de signature avec le gradle signingReport commande:

./gradlew signingReport

Pour plus d' informations, visitez API Google pour Android .

Vous pouvez lier un existant compte Google Analytics sur votre existant FirebaseProject programme. Notez que vous pouvez également lier votre projet Firebase existant à Google Analytics dans l' Intégrations onglet de vos paramètres du projet.

L'appel à projects.addGoogleAnalytics nécessite une analytics_resource , qui peut être un analyticsAccountId ou un analyticsPropertyId :

  • Spécifiez un existant analyticsAccountId à disposition une nouvelle propriété Google Analytics dans le compte indiqué et associer la nouvelle propriété avec votre projet Firebase.

  • Spécifiez un existant analyticsPropertyId associer la propriété Google Analytics avec votre projet Firebase.

Vous pouvez trouver à la fois votre analyticsAccountId et tout existant analyticsPropertyId sur le site Web de Google Analytics .

Lorsque vous appelez projects.addGoogleAnalytics :

  1. La première vérification détermine si les flux de données existantes dans le correspondent de la propriété Google Analytics Apps Firebase existant dans votre FirebaseProject (sur la base packageName ou bundleId associé au flux de données). Ensuite, le cas échéant, les flux de données et les applications sont liés. Notez que cette liaison automatique s'applique uniquement aux applications Android et aux applications iOS.

  2. Si aucun flux de données correspondant n'est trouvé pour vos applications Firebase, de nouveaux flux de données sont provisionnés dans la propriété Google Analytics pour chacune de vos applications Firebase. Notez qu'un nouveau flux de données est toujours provisionné pour une application Web, même s'il était précédemment associé à un flux de données dans votre propriété Analytics.

En savoir plus sur la hiérarchie et la structure des comptes Google Analytics dans la documentation Analytics .

DEMANDER

Appel projects.addGoogleAnalytics .

Dans le corps de la demande de notre appel exemple project.addGoogleAnalytics , nous précisons notre compte Google Analytics analyticsAccountId . Cette disposition de la volonté d'appel une nouvelle propriété Google Analytics et d' associer la nouvelle propriété avec le FirebaseProject .

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

Voici un exemple permettant à Node.js d'associer un projet Firebase à un compte 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']);
  }
}

RÉSULTAT

Le résultat d'un appel à projects.addGoogleAnalytics est une Operation . Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit être réussie.

Pour vérifier si l'opération est réussie, vous pouvez appeler operations.get sur l'opération jusqu'à ce que la valeur de done est true et la response est de type analyticsDetails . Si l'opération échoue, son error est réglé sur google.rpc.Status .

Voici le corps de la réponse d'un operations.get appel:

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

Depuis done est vrai et la response type est analyticsDetails , le FirebaseProject est maintenant lié au compte Google Analytics spécifié. L' Operation est automatiquement supprimée après la fin.

Finalisez l'emplacement par défaut de votre projet (facultatif)

Si votre projet Firebase utilisera Nuage Firestore, Cloud Storage ou une application App Engine, vous pouvez finaliser le défaut de Google Cloud Platform (GCP) Emplacement des ressources pour votre projet d'un programme. Notez que vous pouvez également sélectionner un emplacement dans la console Firebase .

Avant de cet endroit, consultez Sélectionner les emplacements pour votre projet pour obtenir des informations sur l' emplacement qui est le mieux pour votre projet. Vous devez également appeler projects.availableLocations pour retourner une liste des emplacements valides pour votre projet parce que si votre projet fait partie d'une organisation Google Cloud, vos politiques d'organisation pourraient restreindre quels emplacements sont valables pour votre projet.

L' appel de cette defaultLocation.finalize méthode crée une application App Engine avec un défaut seau Cloud Storage situé dans le locationId que vous fournissez dans le corps de la demande.

L'emplacement de GCP par défaut des ressources peut avoir déjà été précisé si le Project a déjà une application App Engine ou cette defaultLocation.finalize méthode a été appelée précédemment.

DEMANDER

Appel projects.defaultLocation.finalize . Voici comment construire le corps de votre requête :

  • Obligatoire:

    • locationId : L'endroit où vos données sont stockées pour les services de GCP qui nécessitent un réglage de l' emplacement, comme nuage Firestore ou Cloud Storage.
{
  "locationId": "us-west2"
}

Voici un exemple pour que Node.js finalise l'emplacement par défaut de votre projet :

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']);
  }
}

RÉSULTAT

Le résultat d'un appel à projects.defaultLocation.finalize est une Operation . Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit être réussie.

Pour vérifier si l'opération est réussie , vous pouvez appeler operations.get sur l'opération jusqu'à ce que la valeur de done est true et sa response est de type google.protobuf.Empty . Si l'opération échoue, le corps réponse error sera de type google.rpc.Status . L' Operation est automatiquement supprimée après la fin.