L'API REST Firebase Management permet la configuration et la gestion programmatiques des projets Firebase, y compris des ressources Firebase et des applications Firebase d'un projet.
Cette présentation décrit le workflow général pour ajouter des ressources et des applications Firebase à un projet Google Cloud existant qui n'utilise pas encore les services Firebase.
Vous pouvez accéder directement à des sections spécifiques de cette page si vous souhaitez seulement:
- 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 décrites sur cette page, assurez-vous d'activer l'API.
Pour plus d'informations sur la gestion des accès pour l'API Firebase Management, consultez la documentation de l'API Cloud Identity and Access Management (IAM).
Avant de commencer
Avant de commencer, vous devez activer l'API Management pour votre projet Google Cloud et générer votre jeton d'accès.
Activer l'API REST de gestion pour votre projet Google Cloud
Si vous ne l'avez pas déjà fait, vous devez activer l'API Firebase Management pour l'utiliser avec votre projet Google Cloud.
- Ouvrez la page API Firebase Management dans la console Google APIs.
- Lorsque vous y êtes invité, sélectionnez votre projet Google Cloud.
- 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 à la clé de votre 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"
Utilisez ensuite le SDK Admin Firebase 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);
});
}
Trouver le nom de la ressource de votre projet
Vous pouvez trouver les projets Google Cloud disponibles pour ajouter des services Firebase.
DEMANDER
Appelez availableProjects.list
.
Le corps de la requête pour cet appel doit être vide.
Voici un exemple de requête de liste de projets Google Cloud disponibles pour Node.js :
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 à un appel à availableProjects.list
contient une liste d'objets ProjectInfo
. 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 d'un projet.
Vous pouvez utiliser n'importe quelle valeur project
répertoriée dans la réponse de availableProjects.list
pour ajouter des services Firebase ou ajouter des applications à votre projet.
Dans la section suivante, nous ajouterons des services Firebase à First Cloud Project
à l'aide du nom de la ressource projects/first-gcp-project
.
Ajouter des services Firebase à votre projet
Les projets Google Cloud peuvent bénéficier des services offerts par Firebase. Dans cette section, vous allez apprendre à ajouter de manière automatisée des services Firebase à votre projet Google Cloud existant. 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 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 un Operation
. Pour que vous puissiez appeler d'autres points de terminaison associés à Firebase pour votre projet, l'opération doit réussir.
Pour vérifier si l'opération aboutit, vous pouvez appeler operations.get
sur l'opération jusqu'à ce que la valeur de done
soit true
et que son response
soit de type FirebaseProject
. Si l'opération échoue, son error
est défini sur google.rpc.Status
.
Voici le corps de 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 un FirebaseProject
, le projet Google Cloud dispose désormais de services Firebase. La réponse contient également d'autres informations utiles sur le FirebaseProject
que vous venez de créer, comme son projectNumber
et son resources
par défaut. Le Operation
est automatiquement supprimé une fois l'opération 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 découvrir comment ajouter des applications Firebase à votre FirebaseProject
existante de manière programmatique. Notez que vous pouvez également ajouter des applications Firebase à votre projet Firebase existant dans la console Firebase.
Sélectionnez un type d'application Firebase à ajouter à votre projet Firebase.
Associer votre projet Firebase à un compte Google Analytics (facultatif)
Vous pouvez associer un compte Google Analytics existant à votre FirebaseProject
existant de manière programmatique. 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 de projects.addGoogleAnalytics
nécessite un analytics_resource
, qui peut être un analyticsAccountId
ou un analyticsPropertyId
:
Spécifiez un
analyticsAccountId
existant pour provisionner une nouvelle propriété Google Analytics dans le compte spécifié et associez-la à votre projet Firebase.Spécifiez un
analyticsPropertyId
existant pour associer la propriété Google Analytics à votre projet Firebase.
Vous trouverez votre analyticsAccountId
et tous les analyticsPropertyId
existants sur le site Web de 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 dupackageName
ou de l'bundleId
associé 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 s'il était auparavant associé à 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 pour notre exemple d'appel à project.addGoogleAnalytics
, nous allons spécifier notre compte Google Analytics analyticsAccountId
. Cet appel provisionne une nouvelle propriété Google Analytics et l'associe à 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
. Pour que vous puissiez appeler d'autres points de terminaison associés à Firebase pour votre projet, l'opération doit réussir.
Pour vérifier si l'opération aboutit, vous pouvez appeler operations.get
au niveau de l'opération jusqu'à ce que la valeur de done
soit true
et que le response
soit de type analyticsDetails
. Si l'opération échoue, son error
est défini sur google.rpc.Status
.
Voici le corps de 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 vrai et que le type response
est analyticsDetails
, FirebaseProject
est désormais associé au compte Google Analytics spécifié. Le Operation
est automatiquement supprimé une fois l'opération terminée.