L'API REST Firebase Management permet de configurer et de gérer de manière automatisée les projets Firebase, y compris les ressources et les applications Firebase d'un projet.
Cette présentation décrit le workflow général permettant d'ajouter des ressources et des applications à un Google Cloud projet existant qui n'utilise pas encore les services Firebase.
Vous pouvez accéder directement à des sections spécifiques de cette page si vous souhaitez simplement :
- ajouter des services Firebase à votre projet ;
- ajouter des applications Firebase à votre projet Firebase ;
- associer votre projet Firebase à un compte Google Analytics.
Avant de suivre les étapes de cette page, assurez-vous d' activer l'API.
Pour en savoir plus sur la gestion des accès à l'API Firebase Management, consultez la documentation de l'API Cloud Identity Access Management (IAM).
Avant de commencer
Avant de commencer, vous devez activer l'API Management pour votre Google Cloud projet et générer votre jeton d'accès.
Activer l'API REST Management pour votre projet Google Cloud
Si ce n'est pas déjà fait, vous devez activer l' API Firebase Management pour l'utiliser avec votre Google Cloud projet.
- Ouvrez la page de l'API Firebase Management dans la console Google APIs.
- Lorsque vous y êtes invité, sélectionnez votre Google Cloud projet.
- Cliquez sur Activer sur la page de l'API Firebase Management.
Générer votre jeton d'accès à l'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 variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS sur le chemin d'accès à votre clé de compte de service.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
Avec PowerShell :
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Ensuite, utilisez le SDK Admin Firebase pour obtenir un jeton d'accès à partir des identifiants de votre compte de service :
import { initializeApp, applicationDefault } from "firebase-admin/app";
initializeApp();
async function getAccessToken() {
try {
const accessToken = await applicationDefault().getAccessToken();
return accessToken.access_token;
} catch (err) {
console.error('Unable to get access token');
console.error(err);
}
}
Trouver le nom de ressource de votre projet
Vous pouvez trouver les Google Cloud projets pour lesquels vous pouvez ajouter des services Firebase.
DEMANDER
Appelez
availableProjects.list.
Le corps de la requête pour cet appel doit être vide.
Voici un exemple pour Node.js permettant de demander une liste des Google Cloud projets 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 d'
ProjectInfo
objets. Si la liste des projets est trop longue, 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 exemple de corps de réponse d'un appel availableProjects.list :
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
Cet exemple de réponse comporte deux projets Google Cloud auxquels des services Firebase
peuvent être ajoutés. Notez que le champ project fournit le nom de ressource unique au niveau mondial pour un projet.
Vous pouvez utiliser n'importe quelle project valeur listée dans la réponse de
availableProjects.list pour ajouter des services Firebase ou
ajouter des applications à votre projet.
Dans la section suivante, nous allons ajouter des services Firebase à First Cloud Project à l'aide du nom de ressource projects/first-gcp-project.
Ajouter des services Firebase à votre projet
Google Cloud projets peuvent tirer parti des services proposés par Firebase. Dans cette section, vous allez apprendre à ajouter des services Firebase à votre projet existant Google Cloud de manière automatisée. Notez que vous pouvez également ajouter des services Firebase à votre projet Google Cloud existant dans la console Firebase.
DEMANDER
Appelez
projects.addFirebase.
Le corps de la requête pour cet appel doit être vide.
Voici un exemple pour Node.js permettant d'ajouter des services Firebase à votre Google Cloud projet :
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 un
Operation. Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit réussir.
Pour vérifier si l'opération a réussi, vous pouvez appeler
operations.get
sur l'opération jusqu'à ce que la valeur de done soit true et que sa response soit de
type FirebaseProject. Si l'opération échoue, son error est défini sur google.rpc.Status.
Voici le corps de la réponse d'un appel 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"
}
}
}
Étant donné que done est true et que le type response est FirebaseProject, le
Google Cloud projet dispose désormais de services Firebase. La réponse contient également d'autres informations utiles sur votre FirebaseProject nouvellement créé, comme son projectNumber et ses resources par défaut. L'Operation est automatiquement supprimée une fois terminée.
Ajouter des applications Firebase à votre projet
De nombreuses applications différentes peuvent utiliser un FirebaseProject, y compris les applications iOS, Android et Web. Dans cette section, vous allez apprendre à ajouter des applications Firebase à votre FirebaseProject existant de manière automatisée. Notez que vous pouvez également ajouter des applications Firebase à
votre projet Firebase existant dans la Firebase console.
Sélectionnez un type d'application Firebase à ajouter à votre projet Firebase.
iOS+
Vous pouvez ajouter une application Firebase iOS à votre projet Firebase existant.
DEMANDER
Appelez
projects.iosApps.create.
Voici comment construire le corps de votre requête :
Obligatoire :
bundleId: ID de bundle canonique de l'application iOS tel qu'il apparaît dans l'App Store iOS.
Facultatif, mais recommandé :
displayName: nom d'affichage de l'application attribué par l'utilisateur. Cette valeur est utile pour retrouver l'application ultérieurement dans la Firebase console.appStoreId: ID Apple généré automatiquement et attribué à votre application par Apple. Spécifiez unappStoreIds'il a déjà été attribué par Apple.
Dans le corps de la requête de notre exemple, nous n'utiliserons qu'un displayName et un bundleId :
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
Voici un exemple pour Node.js permettant d'ajouter une application Firebase iOS à votre projet Firebase :
const fetch = require('node-fetch');
async function addIosApp(projectId, displayName, bundleId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/iosApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'bundleId': bundleId
}),
};
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.iosApps.create est un
Operation. Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit réussir.
Pour vérifier si l'opération a réussi, vous pouvez appeler
operations.get
sur l'opération jusqu'à ce que la valeur de done soit true et que sa response soit de
type IosApp. Si l'opération échoue, son error est défini sur google.rpc.Status.
Voici le corps de la réponse d'un appel operations.get :
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.IosApp",
"name": "projects/first-cloud-project/iosApps/...",
"appId": "...",
"displayName": "My Firebase iOS App",
"projectId": "first-cloud-project",
"bundleId": "com.firebase.ios"
}
}
Étant donné que done est true et que le type response est IosApp, le FirebaseProject dispose désormais d'une IosApp. La réponse contient également d'autres informations utiles sur votre application Firebase iOS nouvellement créée, comme l'appId Firebase unique. L'Operation est automatiquement supprimée une fois terminée.
Android
Vous pouvez ajouter une application Firebase Android à votre projet Firebase existant.
DEMANDER
Appelez
projects.androidApps.create.
Voici comment construire le corps de votre requête :
Obligatoire :
packageName: nom de package canonique de l'application Android tel qu'il apparaît dans la console Google Play.
Facultatif, mais recommandé :
displayName: nom d'affichage de l'application attribué par l'utilisateur. Cette valeur est utile pour retrouver votre application ultérieurement dans la Firebase console.
Dans le corps de la requête de notre exemple, nous utiliserons packageName et displayName :
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Voici un exemple pour Node.js permettant d'ajouter une application Firebase Android à 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 un
Operation. Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit réussir.
Pour vérifier si l'opération a réussi, vous pouvez appeler
operations.get
sur l'opération jusqu'à ce que la valeur de done soit true et que sa response soit de
type AndroidApp. Si l'opération échoue, son error est défini sur google.rpc.Status.
Voici le corps de la réponse d'un appel 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"
}
}
Étant donné que done est true et que le type response est AndroidApp, le FirebaseProject dispose désormais d'une AndroidApp. La réponse contient également d'autres informations utiles sur votre application Firebase Android nouvellement créée, comme l'appId Firebase unique. L'Operation est automatiquement supprimée une fois terminée.
Ajouter des certificats SHA
Vous pouvez ajouter des certificats SHA à n'importe quelle application Firebase Android existante en appelant
projects.androidApps.sha.create.
Le corps de la requête pour cet appel de méthode doit comporter un champ name vide.
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 hachage de certificat SHA-1 ou SHA-256 valide. Vous pouvez obtenir le hachage SHA de votre certificat de signature avec la commande gradle signingReport :
./gradlew signingReport
Pour en savoir plus, consultez la page API Google pour Android.
Web
Vous pouvez ajouter une application Firebase Web à votre projet Firebase existant.
DEMANDER
Appelez
projects.webApps.create.
Voici comment construire le corps de votre requête :
Facultatif :
displayName: nom d'affichage de l'application attribué par l'utilisateur. Cette valeur est utile pour retrouver votre application ultérieurement dans la Firebase console.
Non recommandé :
appUrls: URL complètes où l'application est hébergée. Lorsqu'une application Firebase Web est associée à un Firebase Hosting site, Firebase renseigne automatiquement ces champs. Laissez-les donc vides dans le corps de votre requête.
Nous ne spécifierons qu'un displayName dans le corps de la requête de notre exemple :
{
"displayName": "My Firebase Web App"
}
Voici un exemple pour Node.js permettant d'ajouter une application Firebase Web à votre projet Firebase :
const fetch = require('node-fetch');
async function addWebApp(projectId, displayName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/webApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName
}),
};
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.webApps.create est un
Operation. Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit réussir.
Pour vérifier si l'opération a réussi, vous pouvez appeler
operations.get
sur l'opération jusqu'à ce que la valeur de done soit true et que sa response soit de
type WebApp. Si l'opération échoue, son error est défini sur google.rpc.Status.
Voici le corps de la réponse d'un appel operations.get :
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.WebApp",
"name": "projects/first-cloud-project/webApps/...",
"appId": "...",
"displayName": "My Firebase Web App",
"projectId": "first-cloud-project"
}
}
Étant donné que done est true et que le type response est WebApp, le FirebaseProject dispose désormais d'une WebApp. La réponse contient également d'autres informations utiles sur votre application Firebase Web nouvellement créée, comme l'appId Firebase unique. L'Operation est automatiquement supprimée une fois terminée.
Associer votre projet Firebase à un compte Google Analytics (facultatif)
Vous pouvez associer un compte
Google Analytics existant à votre
FirebaseProject existant de manière automatisée. Notez que vous pouvez également associer votre projet Firebase existant à Google Analytics dans l'onglet Intégrations de vos Paramètres du projet.
L'appel à projects.addGoogleAnalytics nécessite un analytics_resource, qui peut être un analyticsAccountId ou un analyticsPropertyId :
Spécifiez un
analyticsAccountIdexistant pour provisionner une propriété Google Analytics dans le compte spécifié et associer la nouvelle propriété à votre projet Firebase.Spécifiez un
analyticsPropertyIdexistant pour associer la propriété Google Analytics à votre projet Firebase.
Vous pouvez trouver votre analyticsAccountId et tout existant
analyticsPropertyId sur le site Web
Google Analytics.
Lorsque vous appelez projects.addGoogleAnalytics :
La première vérification détermine si des flux de données existants dans la propriété Google Analytics correspondent à des applications Firebase existantes dans votre
FirebaseProject(en fonction dupackageNameou dubundleIdassocié au flux de données). Ensuite, le cas échéant, les flux de données et les applications sont associés. Notez que cette association automatique ne s'applique qu'aux applications Android et iOS.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 si elle était auparavant associée à un flux de données dans votre propriété Analytics.
Pour en savoir plus sur la hiérarchie et la structure des comptes Google Analytics, consultez la documentation Analytics.
DEMANDER
Appelez
projects.addGoogleAnalytics.
Dans le corps de la requête de notre exemple d'appel à project.addGoogleAnalytics, nous allons spécifier notre compte Google Analytics analyticsAccountId. Cet appel provisionnera une propriété Google Analytics et associera la nouvelle propriété au FirebaseProject.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Voici un exemple pour Node.js permettant 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 un
Operation. Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit réussir.
Pour vérifier si l'opération a réussi, vous pouvez appeler operations.get sur l'opération jusqu'à ce que la valeur de done soit true et que la response soit de type analyticsDetails. Si l'opération échoue, son error est défini sur google.rpc.Status.
Voici le corps de la réponse d'un appel operations.get :
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
Étant donné que done est "true" et que le type response est analyticsDetails, le FirebaseProject est désormais associé au compte Google Analytics spécifié. L'Operation est automatiquement supprimée une fois terminée.